首页 > 解决方案 > 如果所有数据库操作都是通过 Mongoose 完成的,注入仍然是一个问题吗?

问题描述

学习 MongoDB 的基础知识后,我了解到MongoDB 容易受到开箱即用的注入攻击。在节点中,可以使用模块mongo-sanitize来防止这种情况。到现在为止还挺好。现在让我们将Mongoose添加到等式中。

如果我们使用猫鼬

我记得读过 Mongoose 可以在一定程度上防止注射,但我不知道具体情况,或者对 Mongoose 进行消毒是否是多余的。

标签: javascriptnode.jsmongodbsecuritymongoose

解决方案


就像文章提到的那样,当用户不发送像“bergur”和“myawesomepassword”这样的字符串,而是发送{"$ne": null}用户名和密码时,就会出现问题。

如果您创建一个模式并将用户名和密码定义为字符串,那么 Mongoose 会将其转换为字符串,您就可以避免这个问题。

关于 where 注入,mongo-sanitize 不会帮助你。解决方案就是永远不要使用 $where 运算符

所以简单回答你的问题:

  1. 不,您不需要使用 mongo-sanitize
  2. 没有明确的注入保护,保护来自模式和模型。

推荐阅读