xss攻击
- XSS攻击全称跨站脚本攻击
反射型
- 发出请求时,XSS代码出现在url上,作为输入提交到服务器端,服务器端解析响应后,XSS代码随响应内容一起传回给浏览器,最后浏览器解析执行XSS代码。这个过程像一次反射,故叫反射型XSS。
- 通过诱导链接等手段在url上拼接一段脚本,这段脚本可能是
1
2
3
4
5
6
7
8自动执行
<img src="null" onerror="xxx" alt="">
触发执行
<p onclick="xxx"></p>
内嵌入广告、攻击页面、csrf引诱页面等
<iframe src="xxx" frameborder="0"></iframe>
存储型
- 存储型XSS 和 反射型XSS的差别仅在于,提交的代码会存储在服务器端(数据库、内存、文件系统等),下次请求目标页面时用再提交XSS代码。
防范XSS的防御措施
编码
- 对用户输入的数据进行HTML Entity编码
过滤
- 移除用户上传的DOM属性,如onerror等
- 移除用户上传的Style节点(破坏页面样式),Script节点(权限做任何事情),Iframe(连环触发csrf攻击)节点等
校正
- 避免直接对HTML Entity解码(不然之前的编码就没用了,在解码过程中也是解析)
- 使用DOM Parse转换,矫正不配对的DOM标签
Http-only
- 服务端设置cookie中加入ttp-only请求头,防止js代码获取特定的cookie