Spring数据MongoDBnosql注入

Spring Data MongoDB nosql injection

我有一个问题。 spring 数据中的 mongo 个存储库中的查询是否可以免受 NoSQL 注入攻击?是否有可能成功地对 spring-boot 应用程序执行此类攻击?例如,如果我创建使用我自己的方法扩展 MongoRepository 的接口,是否以安全的方式生成默认查询,这样的攻击是不可能的?谢谢

我用一个 mongo 存储库创建了小型 Spring 启动应用程序。我对它执行了一些基本的 NoSQL 注入攻击,为了确保它们有效,我还使用 Robo3T 进行了攻击,并检查了输出是否符合我的预期。例如,进行如下查询:

db.getCollection('user').find({
"login":"f1", 
"password" : { '$ne': null } })

会给我所有具有数据库中存在的登录名的用户。 我通过对 String 字段类型执行这样的 { '$ne': null } 进行了这种攻击。(我也对其他类型进行了一些其他攻击,但我稍后会解释我的其他结论)正如我所想的那样,它是不可能提供我们自己的命令。 Spring 只是让它看起来像:

"password":"{ '$ne': null }"

并且每当我们尝试以“”结尾时,它只会将 \ 添加到我们的查询中,例如:

{ "login" : "f1", "password" : "\"end earlier\"" }

我还检查了其他请求(主要来自此处:https://github.com/cr0hn/nosqlinjection_wordlists/blob/master/mongodb_nosqli.txt as I found it here https://www.owasp.org/index.php/Testing_for_NoSQL_injection,也许这些链接会对某人有所帮助),但是其中 none 是成功的。因此,就我而言,他们已准备好应对 NoSQL 注入等情况,并且他们对其进行了保护。但是,如果有人可以支持或不同意我的观点(基于执行的攻击)并提供更多证据或示例,我将不胜感激。 谢谢