spring for mongodb转义参数以避免SQL注入

问题描述 投票:2回答:2

我是一个新手 - 使用带有MongoDB的spring。

我正在使用一个使用MongoOperations对象的Dao模式。

由于我在RDBMS和JPA方面有很多经验,我们通常使用setParameter,它也会考虑转义和避免SQL注入。

我想知道MongoDB春天是否有这样的想法。我找不到它,但我可能会遗漏一些东西。我不得不说我仍然不确定使用Mongo是否存在SQL注入风险。

另外,有没有办法在MongoDB中创建命名查询?

谢谢你们。

spring sql-injection spring-data-mongodb nosql
2个回答
1
投票

有一些非常类似于SQL注入的东西是NOSQL注入。 特殊字符不同但概念是相同的:用户可以控制/修改/破坏请求。

然而,即使这些数据库不使用传统的SQL语法,它们仍然可能容易受到注入攻击。因为这些NoSQL注入攻击可以在过程语言中执行,而不是在声明性SQL语言中执行,所以潜在的影响比传统的SQL注入更大

有一种方法可以验证,here is an OWASP page可以帮助您测试。

基本是验证您的请求是否正确地逃脱了' " \ ; { }以及更多。

似乎spring数据mongodb正确地逃脱了那些,但我不知道它是否完全安全。

至于命名查询,我认为this answer是正确的,它们不存在,但如果你有一个存储库,你仍然有一个@Query注释。

而且因为您使用自定义存储库并不意味着您也不能使用存储库接口,Spring数据允许您在不实现它的情况下实现repostiroy,see here


0
投票

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);
}
© www.soinside.com 2019 - 2024. All rights reserved.