我在这里读到了 https://www.npmjs.com/package/hpp
它说:“Express 在数组中填充具有相同名称的 http 请求参数。攻击者可以污染请求参数以利用此机制”
我不明白攻击者可以使用什么机制?
最佳答案
他们说的是可以利用将简单值参数转换为数组参数的机制。
如果您希望 name
是一个字符串:
?name=hello
他们可以将它转换成这样的数组:
?name=hello1&name=hello2
你不会得到一个字符串,而是一个数组:
[ "hello1", "hello2" ]
这种机制是隐式的,因此即使您不想要数组而是字符串,用户也可以强制执行。
这就是他们所说的全部。从那里开始,根据您的代码实际执行的操作,可能会产生多种后果。为了防止它,您可能应该检查字符串是否为字符串,数组是否为数组。这是关于安全的永恒格言:
Never trust the user, never trust input.
每天重复 10 次。
关于javascript - 什么是 NodeJS/ExpressJs 中的 HTTP 参数污染攻击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30672500/