我正在使用一个验证库,它从我的 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'
除了有一个错误(它只“保护”一个参数,而不是所有参数),在我看来,整个事情本身就是一个错误。
所以我的问题是:这种替代品可以抵御什么样的攻击媒介?
如果它没有真正做任何事情,我想向项目提交一个补丁,将其完全删除。如果它合法地保护图书馆的用户,我想提交一个补丁来修复现有的错误。