Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 这段代码如何防止XSS攻击?_Node.js_Xss_Security - Fatal编程技术网

Node.js 这段代码如何防止XSS攻击?

Node.js 这段代码如何防止XSS攻击?,node.js,xss,security,Node.js,Xss,Security,我正在使用一个验证库,它可以从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');

我正在使用一个验证库,它可以从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(它只“保护”一个参数,而不是所有参数),在我看来整个事情本身就是一个bug

因此,我的问题是:这种类型的攻击向量是什么? 如果它不是真的做什么,我想提交一个补丁的项目删除它完全。如果它合法地保护了库的用户,我想提交一个补丁来修复现有的bug

xss_hash
返回一个随机字母数字字符字符串

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


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

通过将
&
分隔的URL参数替换为随机字符串,将有问题的代码称为“受保护的查询字符串变量”,在进行其他可能移除或损坏符号的处理之前。正如Jay Shah所指出的,下面有一段代码是用来替换查询字符串和的,但是另一个错误阻止了它的正常工作。

xss_hash
调用Math.random(),因此它肯定是随机的。但是你是对的-我以前没有看到过,但是在这下面有一行将
xss_hash()
替换为“&”。但是它不能正常工作,因为
xss\u散列
是随机的。。。