我正在使用一个验证库,从输入中删除一些常见的XSS攻击到我的Web应用程序。它工作正常,我也逃避了我提供的一切,以防止XSS攻击。此代码如何防范XSS攻击?
该库包含该线路XSS过滤过程的一部分:
// Protect query string variables in URLs => 901119URL5918AMP18930PROTECT8198
str = str.replace(/\&([a-z\_0-9]+)\=([a-z\_0-9]+)/i, xss_hash() + '$1=$2');
xss_hash
返回的随机字母数字字符的字符串。基本上,它需要有一个查询字符串的URL,并轧液有点:
> xss('http://example.com?something=123&somethingElse=456&foo=bar')
'http://example.com?something=123eujdfnjsdhsomethingElse=456&foo=bar'
除了有一个bug(它只是“保护”一个参数,不是所有的人),在我看来,整个事情是本身一个错误。
所以我的问题是:什么样的攻击矢量是这种替换防护?
如果它没有真正做任何事情,我想提交一个补丁到完全删除它的项目。如果它合法地保护了图书馆的用户,我想提交一个补丁来修复现有的错误。
'xss_hash'调用Math.random(),所以它肯定是随机的。但是你是对的 - 我以前没有看到它,但是在它下面有一行代码,用'&'代替'xss_hash()'。但它不能正常工作,因为'xss_hash'是随机的... – chesles