【问题标题】:Prevent XSS in NodeJS API output在 NodeJS API 输出中防止 XSS
【发布时间】:2025-12-21 20:50:06
【问题描述】:

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

但是,从 API 安全输出的推荐方法是什么?由于不知道预期用途,因此无法使用 HTML 编码对其进行转义。

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

我在想,虽然可以验证传入数据的某些字段(例如“电子邮件”),但其他更模糊的字段(例如“描述”)可能包含有人可能用于 XSS 的任何字符。像 https://cheatsheetseries.owasp.org/cheatsheets/Nodejs_Security_Cheat_Sheet.html 像这样,但它最后一次更新是在 7 年前https://github.com/ESAPI/node-esapi

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

【问题讨论】:

    标签: node.js api xss


    【解决方案1】:

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

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

    安全性既不是服务器独有的工作,也不是客户端独有的工作。两者兼而有之,减轻威胁的方式取决于具体情况。

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

    XSS 对 Web 应用程序是一种威胁,缓解这种威胁的方法是在任何用户控制的输入进入 DOM 之前对其进行正确编码和/或转义。

    【讨论】: