什么是NodeJS / ExpressJs中的HTTP参数污染攻击

时间:2015-06-05 17:31:00

标签: javascript node.js security express

我在这里阅读https://www.npmjs.com/package/hpp

它说:" Express在数组中填充具有相同名称的http请求参数。攻击者可以污染请求参数以利用此机制"

我不明白攻击者可以使用什么机制?

1 个答案:

答案 0 :(得分:7)

他们所说的是可以利用将简单值参数转换为数组参数的机制。

如果您希望name成为字符串:

?name=hello

他们可以将它转换成这样的数组:

?name=hello1&name=hello2

你不会得到一个字符串而是一个数组:

[ "hello1", "hello2" ]

这种机制是隐含的,因此即使你不想要一个数组而是一个字符串,用户也可以强制这种机制。

这就是他们所说的。从那里,可能会根据您的代码实际执行的操作产生一些后果。为了防止它,你应该检查字符串是字符串,数组是数组。这里出现了持久的 adage 安全性:

  

永远不要相信用户,绝不相信输入。

每天重复10次。