BasicDBObject.parse()是否对NoSQL注入攻击安全?

时间:2018-11-26 21:08:52

标签: mongodb security mongo-java

我正在使用mongo-java-driver连接到我的MongoDB。 所以我的问题是关于将MongoDB与Java客户端一起使用:

  • com.mongodb.BasicDBObject.parse(userInput)是否可以抵御NoSQL注入攻击?
  • 还是我必须在解析之前清理userInput字符串?
  • 如果我必须清理输入内容:mongo-java-driver附带有用于清理的特殊方法吗?
  • 还是我应该改用basicDBObject.put( "foo", "bar" )

MongoDB documentation describes a strict mode

  • 严格模式是否清除输入内容?
  • 解析时如何激活严格模式?

OWASP guide描述了几种MongoDB注入攻击。 还不清楚BasicDBObject.parse()是否对输入本身进行了消毒。

1 个答案:

答案 0 :(得分:1)

  1. com.mongodb.BasicDBObject.parse()对于NOSQL注入是不安全的
  2. 消毒通常是对抗注射的好方法,但还不够
  3. 这里有一些针对NOSQL注入的OWASP指南:https://www.owasp.org/index.php/Injection_Prevention_Cheat_Sheet_in_Java#Example_-_MongoDB

如果您要对查询进行参数化,建议您看一下Hibernate OGM:http://hibernate.org/ogm/documentation/。参数化是唯一解决注射问题的方法