原理
将没经过转义处理的数据显示在页面上,如果是脚本<script></script>
,就会运行,从而达到攻击效果
导致的后果
- 用户的信息会被窃取。cookie信息,账号信息
- 页面逻辑会被改。重定向到某个网站、修改页面内容
攻击演示
- 启动DVWA, 进入XSS (Reflected)
- 在输入框输入
<script>alert(1)</script>
, 点击提交
防御
- http 响应header 增加X-XSS-Protection字段,用来预防url的脚本,现代浏览器默认开启
- 字符过滤:数据输出页面时将< > ' " 替换成字符实体
-
csp(内容安全策略): http 响应头字段,允许哪些资源可以运行,不单单是脚本
例子。注意,只能运行声明规则的脚本运行,内联事件处理程序会被阻止
ctx.response.set("Content-Security-Policy","script-src 'self'")
只允许当前域的url脚本加载
ctx.response.set("Content-Security-Policy","script-src 'unsafe-inline'")
只允许<script></script>的脚本加载
ctx.response.set("Content-Security-Policy","script-src 'self' 'unsafe-inline'")
只允许当前域url和<script></script>的脚本加载
ctx.response.set("Content-Security-Policy","script-src http://ads-pre.100ranzhi.com")
允许指定域的脚本加载
网友评论