ExpressJS:如何防止用户在 req.body 中使用 posting/patching 代码

ExpressJS: How to prevent a user from posting/patching code inside req.body

我正在使用 expressJS 开发 API。此 API 是一个半博客服务,客户可以创建、更新和删除他们的 post 和内容。我对实现其 post 和补丁路由有安全顾虑。

如果用户注入一些JS代码并发送到API存储在Mongodb,这些代码会不会影响我们的API ?我如何防止用户使用其中的任何代码post修改和修补请求?

我找到了“xss-clean”中间件来清理用户输入正文,是否足够用于此目的?

因为确保我使用正确的中间件来保护这个API对我来说非常重要,所以我问这个问题。

If the user injects some JS code and sends it to API to store in Mongodb, could these codes affect our API?

一般来说:不会。

代码以邮件正文的形式出现。它被你的中间件解析成一个数据结构,在那里它将显示为一个字符串。然后将该字符串放入通过 Mongodb 客户端 API 传递的结构化数据对象中,客户端 API 将其发送到数据库并进行任何需要的转义。

I have found "xss-clean" middleware to sanitize the user input body, is it enough for this purpose?

XSS 是一种攻击,其中注入 HTML 文档的数据包含特殊字符,这些字符在 HTML.

中被视为特殊字符

例如

<h1>{{ your_name }}</h1>

其中 your_name 是包含 <script>...</script>.

的数据

这通常通过对数据应用适当的转义来处理(在非常基本的层面上,这意味着将 < 替换为 &lt;)。

XSS 不会直接影响您的 API。


如果您的数据要从 Mongodb 存储中取出并注入到 HTML 文档中,那么 XSS 是一个考虑因素。

xss-cleanxss-filters.

的包装

xss-filters 看起来(我只看了一眼)像一个很好的模块,设计用作输出过滤器(即 运行 就在您将数据插入 HTML 文件).

xss-clean 用作输入过滤器,这不是一个好方法。它使您的数据 HTML 安全,但代价是使其无法用于 HTML 以外的任何目的。您可能希望使用电子邮件中的数据,或生成 Excel 格式的报告。