防止 NodeJS API 输出中的 XSS

Prevent XSS in NodeJS API output

我熟悉在 NodeJS 中使用模板(如 EJS)来为 HTML 上下文转义数据。

然而,从 API 中安全输出的推荐方法是什么?鉴于预期用途未知,无法使用 HTML 编码进行转义。

因为我目前基本上只是在为输出做 res.json({})

我在想虽然可以验证传入数据的某些字段(如 'email'),但其他更模糊的字段(如 'description')可能包含某人可能使用的任何字符对于 XSS。像 < 和 ;。 OWASP 上的选项似乎有限 https://cheatsheetseries.owasp.org/cheatsheets/Nodejs_Security_Cheat_Sheet.html Like this, but it was last updated 7 years ago https://github.com/ESAPI/node-esapi

是否由收件人处理?所以如果有人发送“alert(0);”作为他们的描述,我允许它通过,因为它是有效的 JSON {"description":"alert(0);"}

如果有人想在描述中发送 <script>tweet(document.cookie)</script> 让他们这样做。他们可能有完全正当和正当的理由这样做。也许他们正在写一篇关于安全的文章,而这只是 XSS 攻击的一个例子。

这不是对您的数据库的威胁,而是对您的网页的威胁。

安全既不是 server-only 也不是 client-only 的工作。两者兼而有之,减轻威胁的方式取决于具体情况。

写入数据库时​​,您不必担心的不是 XSS,而是诸如 SQL 注入之类的事情。

XSS 是对 Web 应用程序的威胁,缓解该威胁的方法是在输入 DOM.[=11 之前正确编码 and/or 转义任何 user-controlled 输入=]