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

标签 javascript node.js security express

我在这里读到了 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/

相关文章:

javascript - AngularJS 异步指令编译

javascript - 如何将变量传递到 HTML 正文中

node.js - Bluebird 和 Mongoose : Warning: a promise was created in a handler but was not returned from it

javascript - silverstripe-module yeoman 生成器中的 JS 意外 token 错误

sql - 如何锁定某些列以防止在 postgresql 中为用户编辑

javascript - puppeteer -无法读取未定义的属性“单击”

javascript - 简单的邮件发送带有附件,尽管验证还是发送

javascript - 如何在使用 GraphQl 和 Node.js 时验证用户电子邮件

android - 使用 Proguard 为 Android 应用程序混淆 SMP 库

security - 带有 Parse.com 客户端 key 和应用程序 ID 的开源代码安全吗?