mongoDB 注入

2022-09-04 08:08:05

Java中是否有避免mongoDB注入攻击的常见模式?

谢谢


答案 1

使用受支持的驱动程序之一。不要将字符串反序列化为 JSON 并将其作为查询传递,例如,不要这样做(在 Ruby 中):

collection.send(query_type, JSON.parse(parameters))

其中 和 是来自窗体的字符串。不过,你必须在刑事上愚蠢才能做到这一点。query_typeparameters

由于没有这样的查询语言,因此没有相同的注入空间。SQL 注入攻击之所以可能,部分原因是要执行的操作(、 、 等) 是查询字符串的一部分。MongoDB和许多其他较新的数据库不是这样工作的,相反,操作是API的一部分。其中 SQL 驱动程序只有 ,在某些情况下,MongoDB 具有 、 和 。SELECTUPDATEDELETEqueryexecfindupdateinsertremove


答案 2

您可以在 where 子句中使用 Javascript 构建 MongoDB 查询,这里可以进行注入。这里说明如何防止这种情况:https://docs.mongodb.com/manual/faq/fundamentals/#how-does-mongodb-address-sql-or-query-injection