BasicDBObject.parse() 是否可以抵御 NoSQL 注入攻击?
Is BasicDBObject.parse() secure against NoSQL injection attacks?
我正在使用 mongo-java-驱动程序连接到我的 MongoDB。
所以我的问题是关于将 MongoDB 与 Java 客户端一起使用:
com.mongodb.BasicDBObject.parse(userInput)
可以抵御 NoSQL 注入攻击吗?
- 或者我是否必须在解析之前清理 userInput 字符串?
- 如果我必须清理输入:mongo-java-驱动程序是否有特殊的清理方法?
- 或者我应该使用
basicDBObject.put( "foo", "bar" )
来代替吗?
MongoDB documentation describes a strict mode:
- 这个严格模式会清理输入吗?
- 解析时如何开启严格模式?
OWASP guide 描述了几种 MongoDB 注入攻击。
目前尚不清楚 BasicDBObject.parse()
是否对输入本身进行了清理。
- com.mongodb.BasicDBObject.parse() 对 NOSQL 注入不安全
- 消毒对于对抗一般的注入是一件好事,但还不够
- 这里有一些对抗 NOSQL 注入的 OWASP 指南:https://www.owasp.org/index.php/Injection_Prevention_Cheat_Sheet_in_Java#Example_-_MongoDB
如果您想对查询进行参数化,我建议您看看 Hibernate OGM:http://hibernate.org/ogm/documentation/。参数化是对抗注入的唯一解决方案
我正在使用 mongo-java-驱动程序连接到我的 MongoDB。 所以我的问题是关于将 MongoDB 与 Java 客户端一起使用:
com.mongodb.BasicDBObject.parse(userInput)
可以抵御 NoSQL 注入攻击吗?- 或者我是否必须在解析之前清理 userInput 字符串?
- 如果我必须清理输入:mongo-java-驱动程序是否有特殊的清理方法?
- 或者我应该使用
basicDBObject.put( "foo", "bar" )
来代替吗?
MongoDB documentation describes a strict mode:
- 这个严格模式会清理输入吗?
- 解析时如何开启严格模式?
OWASP guide 描述了几种 MongoDB 注入攻击。
目前尚不清楚 BasicDBObject.parse()
是否对输入本身进行了清理。
- com.mongodb.BasicDBObject.parse() 对 NOSQL 注入不安全
- 消毒对于对抗一般的注入是一件好事,但还不够
- 这里有一些对抗 NOSQL 注入的 OWASP 指南:https://www.owasp.org/index.php/Injection_Prevention_Cheat_Sheet_in_Java#Example_-_MongoDB
如果您想对查询进行参数化,我建议您看看 Hibernate OGM:http://hibernate.org/ogm/documentation/。参数化是对抗注入的唯一解决方案