现在的位置: 首页 > 综合 > 正文

防范XSS攻击

2017年12月07日 ⁄ 综合 ⁄ 共 987字 ⁄ 字号 评论关闭

参考: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 的脚本。

抱歉!评论已关闭.