浏览器XSS自动屏蔽
最近忽然想到对旧网站程序增加xss过滤功能,于是搜索些资料,(XSS示例),写了个大致的过滤函数。
然后,很无聊自己做起了测试:
页面程序输出所有接收到的参数,类似下面这样
t.asp
For Each iKey In Request.QueryString Response.Write iKey Response.Write vbTab Response.Write Request.QueryString(iKey).Item() Next
用Chrome打开t.asp?a=<script>alert('a')</script>后
发现没有动静,难道是输入错字符了?看了下提示,有个脚本错误
x Refused to execute a JavaScript script. Source code of script found within request.
看这意思,是发现了请求中有脚本,自动屏蔽执行了。
再看下IE9
结果类似。
然后,我又在t.asp后面加了一行
<script>alert('加载完毕')</script>
Chrome执行结果,一个报错,一个弹窗,看来检测比较准确
ie9仍旧只是一个提示,下面的代码并没有执行
脚本内容改成与地址栏一样的时候,Chrome也不能执行了。
所以,初步判断,浏览器是检测请求的字符串中脚本是否包含在页面内部,有包含,则禁用掉脚本。
Chrome则只禁用与请求中相同的脚本。
有时间测下其它浏览器对这个问题的反应。特别是IE6及某些安全浏览器。