XSS(Cross Site Scripting),跨站脚本攻击,指通过存在安全漏洞的
Web 网站注册用户的浏览器内运行非法的 HTML标签或 JavaScript 进
行的一种攻击。
一. XSS的危害
- 在访问量极大的一些页面上的XSS可以攻击一些小型网站,实现DDoS攻击的效果。
- 利用脚本窃取用户的 Cookie 值,被害者在不知情的情况下,帮助攻击者发送恶意请求。
- 利用可被攻击的域受到其他域信任的特点,以受信任来源的身份请求一些平时不允许的操作,如进行不当的投票活动。
二. XSS攻击分类
-
1. 反射型XSS
通过URL反射恶意脚本,通过脚本获取本地cookie。 -
2. 存储型XSS
通常出现在用户输入或评论留言区域。黑客发布恶意代码,服务端没有经过过滤存入数据库。在下一次取出来时,所有浏览该信息的用户都会遭受攻击。 -
3. DOM XSS
DOM 型 XSS 攻击,前端在使用 .innerHTML、.outerHTML、document.write() 时,把不可信的数据当作代码执行,导致攻击。
三. 防范措施
-
1. HttpOnly
Set-Cookie: <cookie-name>=<cookie-value>; Domain=<domain-value>; Secure; HttpOnly
HttpOnly是Set-Cookie HTTP响应头中包含的附加标志。
如果HTTP响应头中包含HttpOnly标志,只要浏览器支持HttpOnly标志,客户端脚本就无法访问cookie。 -
2. 客户端输入检查
通过对客户端输入框设置输入检查,减少存储型XSS危害。但该方法无法阻止绕过浏览器的XSS攻击。 -
3. 输出转义
完善的转义库需要针对上下文制定多种规则,例如 HTML 属性、HTML 文字内容、HTML 注释、跳转链接、内联 JavaScript 字符串、内联 CSS 样式表等等。
本文参考自美团技术团队的文章。
https://www.freebuf.com/articles/web/185654.html