XSS-跨站脚本攻击与防御-简洁记录

定义

Cross Site Scripting.是一种网络安全漏洞,攻击者将恶意脚本注入网页上,当其他用户访问页面时,脚本会在浏览器上正常执行,从而盗取信息或执行其他恶意操作。

类型

1.存储型XSS
2.反射型XSS
3.基于DOM的XSS

1.反射型XSS

前提:应用程序接收输入,并对其未进行处理就作为响应的一部分返回给用户。
用户点击攻击者恶意构造的URL,应用程序使用url携带的参数(实际是恶意脚本)进行查询等操作,并将参数返回给页面,页面执行恶意脚本。

https://www.hh.com/search?query=<script>alert('kkk')</script>

2.存储型XSS

在反射型XSS的基础上,将恶意脚本存储在了服务器的数据库内,并将其返回在其他页面上,用户访问页面,浏览器执行脚本,造成攻击。例如留言板。

3.基于DOM的XSS

反射型和存储型攻击均与服务器有关,但基于DOM的XSS只和前端有关。前端js程序将用户的输入作为页面DOM的一部分,例如div的innerHTML、a标签的href地址。

var doc=document.createElement('div');
doc.innerHtml=document.getElementId('#inputBox').value;

防御

1.对输入进行过滤和转义:< iframe >、< script >标签等
2.对输出进行编码:进行HMTL编码,将<>等标签转换哼HTML实体
3.使用HTTP-only Cookies:使前端执行脚本也无法获取到cookie
4.使用安全的框架:现代Web框架提供了自动的xss防护
5.避免直接插入HTML
6.使用自动化工具进行检测,及时修复
7.使用内容安全策略CSP:可在HTTP头进行配置,也可在META标签进行配置

<meta http-equiv="Content-Security-Policy" 
        content="default-src 'self'; 
                 script-src 'self' 'nonce-abc123';
                 style-src 'self' 'unsafe-inline';
                 img-src 'self' data: https:;">
posted @ 2025-10-13 15:40  DurianTRY  阅读(9)  评论(0)    收藏  举报