0

我正在使用一个验证库,它从我的 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'

除了有一个错误(它只“保护”一个参数,而不是所有参数),在我看来,整个事情本身就是一个错误。

所以我的问题是:这种替代品可以抵御什么样的攻击媒介?

如果它没有真正做任何事情,我想向项目提交一个补丁,将其完全删除。如果它合法地保护图书馆的用户,我想提交一个补丁来修复现有的错误。

4

2 回答 2

1

xss_hash返回一串随机的字母数字字符。

它们绝对是随机的,还是基于可计算数据生成的?

它似乎是Security through obscurity:它试图用 's 替换所有的&'s,xss_hash()这样查询的可读性就会降低。我猜库的一部分可以撤消此操作(即xss_hash(),将字符串中的所有 ' 视为&s 用于解析目的)。

于 2012-06-16T17:52:41.060 回答
0

The code in question "protected query string variables" by replacing the & separating URL parameters with a random string, before doing some other processing that would remove or otherwise mangle ampersands. As Jay Shah pointed out, there was code just below that was meant to replace the query string ampersands, but another bug was preventing it from working as intended.

于 2012-06-27T19:48:36.267 回答