XSS, Cross Site Scripting, 跨站脚本攻击.
1. 攻击类型
有3种攻击类型:
1.1. 反射型 XSS
发出请求时, XSS代码出现在URL中, 作为输出提交到服务器端, 服务器端解析后响应, XSS代码随响应内容一期传给浏览器, 最后浏览器解析XSS代码.
这个过程像一次反射, 故叫做反射型XSS.
1.2. 存储型 XSS
存储型XSS和反射型的差别仅在于:提交的代码会存储在服务器端(数据库, 内存, 文件系统等), 下次请求目标页面时不用再提交XSS代码.
1.3. DOM XSS
DOM XSS和反射型 XSS, 存储型 XSS的差别在于:DOM XSS的XSS代码并不需要服务器解析响应的直接参与, 触发XSS靠的就是浏览器短的DOM解析, 可以认为完全是客户端的事情.
2. 危害
- 挂马
- 盗取用户Cookie
- Dos客户端浏览器
- 钓鱼攻击, 高级钓鱼技巧
- 编写正对性的XSS病毒, 删除目标文章, 恶意篡改数据, 嫁祸
- 劫持用户Web行为, 甚至进一步参透内网
- 爆发Web2.0蠕虫
- 蠕虫式DDos攻击
- 蠕虫式挂马攻击, 刷广告, 刷流量, 破坏网上数据
- …
3. XSS 防御
- 编码
对用户输入的数据进行HTML Entity编码.
| 字符 | 转义字符 |
|---|---|
| & | & |
| < | < |
| > | > |
| " | " |
| ‘ | ' |
| / | / |
| 空格 |
- 过滤
对用户上传的不安全的内容进行过滤, 比如:- 移除用户上传的DOM属性, 如onerror, onclick等.
- 移除用户上传的style, script, img, iframe等节点.
- 校正
- 避免直接对HTML Entity解码.
- 使用DOM Parse转换, 校正不配对的DOM标签.