spring for mongodb转义参数以避免SQL注入
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring for mongodb转义参数以避免SQL注入相关的知识,希望对你有一定的参考价值。
我是一个新手 - 使用带有MongoDB的spring。
我正在使用一个使用MongoOperations对象的Dao模式。
由于我在RDBMS和JPA方面有很多经验,我们通常使用setParameter,它也会考虑转义和避免SQL注入。
我想知道MongoDB春天是否有这样的想法。我找不到它,但我可能会遗漏一些东西。我不得不说我仍然不确定使用Mongo是否存在SQL注入风险。
另外,有没有办法在MongoDB中创建命名查询?
谢谢你们。
有一些非常类似于SQL注入的东西是NOSQL注入。 特殊字符不同但概念是相同的:用户可以控制/修改/破坏请求。
然而,即使这些数据库不使用传统的SQL语法,它们仍然可能容易受到注入攻击。因为这些NoSQL注入攻击可以在过程语言中执行,而不是在声明性SQL语言中执行,所以潜在的影响比传统的SQL注入更大
有一种方法可以验证,here is an OWASP page可以帮助您测试。
基本是验证您的请求是否正确地逃脱了' " ; { }
以及更多。
似乎spring数据mongodb正确地逃脱了那些,但我不知道它是否完全安全。
至于命名查询,我认为this answer是正确的,它们不存在,但如果你有一个存储库,你仍然有一个@Query
注释。
而且因为您使用自定义存储库并不意味着您也不能使用存储库接口,Spring数据允许您在不实现它的情况下实现repostiroy,see here。
Mongo中没有SQL注入这样的东西,因为Mongo根本不使用SQL语言。
Spring Data MongoDB中没有命名查询的概念,而是使用@Query
注释您的存储库方法:
public interface PersonRepository extends MongoRepository<Person, String>
@Query(value="{ 'firstname' : ?0 }", fields="{ 'firstname' : 1, 'lastname' : 1}")
List<Person> findByThePersonsFirstname(String firstname);
}
以上是关于spring for mongodb转义参数以避免SQL注入的主要内容,如果未能解决你的问题,请参考以下文章
如何配置 Spring Security 以避免 405 Method Not Allowed for PUT request from Angular?
如何避免使用 Spring-Boot 下载嵌入式 MongoDb
如何在spring数据mongodb中聚合一个嵌套对象并避免PropertyReferenceException?