【问题标题】:Is BasicDBObject.parse() secure against NoSQL injection attacks?BasicDBObject.parse() 对 NoSQL 注入攻击安全吗?
【发布时间】:2019-04-28 13:40:18
【问题描述】:

我正在使用 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() 是否会自行清理输入。

【问题讨论】:

    标签: mongodb security mongo-java


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

    如果您想对查询进行参数化,我建议您查看 Hibernate OGM:http://hibernate.org/ogm/documentation/。参数化是对抗注入的唯一解决方案

    【讨论】:

      猜你喜欢
      • 2013-05-05
      • 2017-03-30
      • 2013-04-18
      • 1970-01-01
      • 2010-10-12
      • 1970-01-01
      • 1970-01-01
      • 2019-12-18
      • 2014-02-16
      相关资源
      最近更新 更多