javascript - 如果所有数据库操作都是通过 Mongoose 完成的,注入仍然是一个问题吗?
问题描述
学习 MongoDB 的基础知识后,我了解到MongoDB 容易受到开箱即用的注入攻击。在节点中,可以使用模块mongo-sanitize来防止这种情况。到现在为止还挺好。现在让我们将Mongoose添加到等式中。
如果我们使用猫鼬
- 我们还需要清理 MongoDB 输入吗?我们还应该和 Mongoose 一起使用 mongo-sanitize 吗?
- Mongoose 是否提供任何显式的注入保护,或者保护来自于模式和模型中的强制类型?
我记得读过 Mongoose 可以在一定程度上防止注射,但我不知道具体情况,或者对 Mongoose 进行消毒是否是多余的。
解决方案
就像文章提到的那样,当用户不发送像“bergur”和“myawesomepassword”这样的字符串,而是发送{"$ne": null}
用户名和密码时,就会出现问题。
如果您创建一个模式并将用户名和密码定义为字符串,那么 Mongoose 会将其转换为字符串,您就可以避免这个问题。
关于 where 注入,mongo-sanitize 不会帮助你。解决方案就是永远不要使用 $where 运算符
所以简单回答你的问题:
- 不,您不需要使用 mongo-sanitize
- 没有明确的注入保护,保护来自模式和模型。
推荐阅读
- wordpress - 使用子主题 WooCommerce 时缺少“storefront-handheld-footer-bar”
- mysql - 使用 gcp cloud sql 代理时如何启用 rewriteBatchStatements?
- azure-logic-apps - 在 Microsoft Power Automate 或 Azure 逻辑应用中计算文件的 md5 校验和
- java - 打印数组列表并存储数据
- javascript - discord.js 没有发送到自定义频道
- javascript - 如何在javascript中设置函数执行时间的限制?
- c# - $.validator.unobtrusive.adapters.addBool() 不起作用
- javascript - 将字符串数组转换为具有这些字符串作为属性和空值的对象
- github - 如何从 GitHub REST API 获取 nuget 包的最新版本号?
- python - 美丽的汤刮电影标题和图像