10

例如 MySQL 数据库存在已知的安全问题。这如何适用于 NoSQL 数据库?例如注入、xss 等。在使用 NoSQL 数据库时,您必须采取哪些安全措施?特别是关于 MongoDB(使用node-mongodb-native)和 Node.js(使用 Express)

如果是这样,是否有任何 Node/Express 模块有助于防止这种情况发生?

4

1 回答 1

11

NodeJS、MongoDB(以及其他一些大量使用 javascript 的 NoSQL 数据库)存在特定问题:serverside javascript injection。查看此处此处 (pdf)了解详细信息。它更像是 SQL 注入而不是 XSS。

很快,当您期望只有 JSON 时,攻击者将 javascript 发送到您的 nodejs 或 mongodb。所以理论上坏人可以让你的服务宕机(DOS),访问你的数据甚至文件系统。

为防止此类攻击,您必须:

  1. 通过将脚本与用户输入连接起来,避免创建“临时”JavaScript 命令。
  2. 使用正则表达式验证 SSJS 命令中使用的用户输入。
  3. 避免使用 JavaScript eval 命令。特别是,在解析 JSON 输入时,请使用更安全的替代方法,例如 JSON.parse。
于 2012-06-10T14:09:07.503 回答