MongoDB的运营商有多危险?

时间:2016-04-06 15:45:49

标签: mongodb rest security

我们说我的MongoDB数据库中有两个集合,一个HTTP服务,用户可以使用它来提交JSON对象。解析后的json然后使用如下:

db.public_collection.find( user_json ).limit(10)

这是由没有写访问权限的RBAC用户执行的。

使用$ where运算符,用户可以:

  1. 更改集合中的记录(我假设RBAC阻止了这一点)?
  2. 改变另一个集合中的记录?
  3. 执行导致服务器速度变慢的资源密集型查询?

2 个答案:

答案 0 :(得分:0)

这不是一个好主意。请参阅Testing for NoSQL InjectionNoSQL injection in MongoDB,了解如何通过将javascript函数注入查询来创建拒绝服务攻击,以及泄漏您没有打算让用户拥有的信息访问。

答案 1 :(得分:-1)

您的RBAC设置将控制对HTTP服务的访问。在函数中使用mongo find方法将不允许对该特定集合进行任何查找/读取操作。没有什么能阻止用户指定昂贵的查询。但是,跨越单个集合的查询不太可能非常昂贵,并且您将结果限制为10。