http://mdsec.net/error/76/
http://mdsec.net/error/82/
错误观点
“我们检查每个用户请求中是否存在嵌入式脚本标签,因此不可能受到XSS攻击。”
除避开过滤是否可行外,现在可以找到3个原因证明这种看法并不正确。
在一些XSS漏洞中,攻击者控制的数据被直接插入到现有的JavaScript脚本中,因此攻击者不需要使用任何脚本标签,或采用其他方法引入脚本代码。在其他情况下,仍然不需要使用任何脚本标签,只需注入一个包含JavaScript的事件处理器即可。
如果应用程序接受通过带外通道传送的数据,并在它的Web界面中显示这些数据,那么攻击者不用使用HTTP提交任何恶意有效载荷,就可以利用任何保存型XSS漏洞。
针对基于DOM的XSS漏洞的攻击不需要向服务器提交任何恶意有效载荷。如果使用片断技巧,那么有效载荷将始终位于客户端。
一些应用程序使用更加复杂的客户端脚本,对查询字符串进行更加严格的解析。例如,它在URL中搜索后面紧跟着等号的参数名称,然后提取等号后面的内容,直到遇到一个分隔符,如&或#。在这种情况下,可以对前面的两个攻击进行如下修改:
在这两个示例中,第一个message=后面紧跟着攻击字符串,其中没有任何干扰脚本执行的分隔符,因此攻击有效载荷将得到处理,且被复制到HTML页面源代码中。