XSS(跨站脚本攻击)攻击原理与防御方案
XSS: 跨站脚本攻击
攻击者通过在不同手段在网站上注入恶意脚本,使之在用户的浏览器上运行。
- 后果:窃取cookie、窃取用户数据发送到第三方服务器、钓鱼链接
常见的xss攻击类型
1. 存储型(存储在后端数据库的, 返回前端后直接渲染)
2. 反射型(攻击者构造出特殊的 URL让用户访问)
js
<a id="a" href="http://www.some.site/page.html?default=<script>alert(document.cookie)</script>">test</a>
测试ie8都没弹窗...(chrome更不可能执行url中的script了)
3.DOM型(使用innerHTML等存在隐患的api)
XSS防范
1.存储型与反射型需要在后端处理
2.DOM型
2.1 过滤用户的输入数据,转义 & < > " ' / 这几个字符【简单防范】
2.2 CSP(Content Security Policy) 内容安全策略
2.3 设置Cookie为HTTP-only:(详见cookie详解)
CSP(内容安全策略)
1、通过 HTTP 头信息的Content-Security-Policy字段启用csp
2、通过网页的meta标签启用csp:
<meta http-equiv="Content-Security-Policy" content="script-src 'self'">
meta标签作用
设置Cookie的HTTP-only
禁止 JavaScript 读取某些敏感 Cookie,攻击者完成 XSS 注入后也无法窃取此 Cookie