参考:http://www.ibm.com/developerworks/cn/web/wa-vulnerabilities/index.html
http://sec.chinabyte.com/246/12760746.shtml
同源策略
所谓同源是指,域名,协议,端口相同。当一个浏览器的两个tab页中分别打开来 百度和谷歌的页面,当浏览器的百度tab页执行一个脚本的时候会检查这个脚本是属于哪个页面的,
即检查是否同源,只有和百度同源的脚本才会被执行。
因为同源策略的原因,也就导致了我们的XSS Payload(XSS攻击代码)必须在我们希望攻击的同一个域下触发。例如攻击者如果想窃取在www.a.com下的cookie,那就必须在www.a.com这个域(可以是不同页面,但要保证是同一个域)下的的某一个页面放置XSS代码,可以是存储型,也可以是反射型或DOM Baesd型的。
什么是XSS
简单来说是由于javascript, ajax的特性,利用异步请求窃取cookies,利用应用中的一些输入框(攻击者注入相应的代码,直接修改dom等等方式)来造成对应用的攻击。
防范策略
1. 进行必要的”编码”和”过滤”
form提交
前端通过验证程序限制或者过滤特殊字符的输入,后端通过aop,在controller层 拦截那些properties,监测或替换特殊字符。
escape函数
该方法不会对 ASCII 字母和数字进行编码,也不会对下面这些 ASCII 标点符号进行编码: * @ – _ + . / 。其他所有的字符都会被转义序列(十六进制\xHH)替换。
利用这个编码函数,不仅能防御XSS攻击,还可以防御一些command注入。
附:常用的需要注意的对象
The URL, Window.location, Document.referrer, ,document.location, document.URL, document.URLUnencoded, cookie data, headers data
2. 确保 JavaScript 变量被引用。
3. 使用 JavaScript 十六进制编码。
4. 使用 JavaScript Unicode 编码。
5. 避免反斜杠编码(\"、\' 或 \\)。
6. 使用 JSON.parse 或 json2.js 库来分析 JSON。
7. 避免使用 eval() 方法分析 JSON,因为它执行任何包含 JSON 的脚本。