node.js - node.js 中的 Mongodb 安全性

标签 node.js mongodb security code-injection database

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

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

最佳答案

NodeJS、MongoDB(以及其他一些大量使用 javascript 的 NoSQL 数据库)存在特定问题:服务器端 javascript 注入(inject)。看herehere (pdf)详情。它更像是 SQL 注入(inject)而不是 XSS。

简而言之,就是攻击者将 javascript 发送到您的 nodejs 或 mongodb,而您只需要 JSON。所以理论上坏人可以让你的服务宕机(DOS),访问你的数据甚至文件系统。

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

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

关于node.js - node.js 中的 Mongodb 安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10969301/

相关文章:

node.js - 如何快速检查 package.json 文件是否包含可以更新到新版本的模块?

javascript - 如何在express中使用路由路径?

security - 你能将 'convert'密文以CBC模式加密到已知IV的ECB模式吗?

mysql - 为什么你会选择在应用层散列密码,而不是使用 mysql SHA2()?

sql - Knex + Postgresql + node - 如何为选定的列调用 postgresql 函数

mongodb - 如何从 MongoDB 中删除数据而不使其停止运行?

node.js - mongo更新查询忽略更新操作中的几个字段

json - 通过在golang中检查MongoDB中的多个属性值来检索项目列表

mysql - 单独运行查询时返回结果,将其添加到更大的查询时返回不明确的引用

javascript - 同一台服务器上的 LAMP 和 nodejs