我是一个新的-通过使用spring与MongoDB。
我使用的是Dao模式,它使用MongoOperations对象。
由于我在RDBMS和JPA方面有很多经验,所以我们通常使用setParameter,它还负责逃逸和避免SQL注入。
我想知道MongoDB在春天是否有这样的想法。我找不到,但我可能漏掉了什么。我不得不说,我仍然不确定是否存在使用Mongo的SQL注入风险。
另外,是否有一种方法可以在MongoDB中创建命名查询?
谢谢你们所有人。
发布于 2018-01-09 16:22:57
有非常类似于SQL的东西,即、NOSQL注入。
特殊字符是不同的,但概念是相同的:用户可以控制/修改/破坏请求。
然而,这些数据库仍然可能容易受到注入攻击,即使它们没有使用传统的SQL语法。由于这些NoSQL注入攻击可能在过程语言中执行,而不是在声明性SQL语言中执行,因此潜在的影响比传统的SQL注入更大。
有一种方法可以验证,下面是一个OWASP页面可以帮助您进行测试。
基本的方法是验证您的请求是否正确地转义了' " \ ; { },甚至更多。
看起来正确地转义了这些数据,但我不知道它是否完全安全。
至于命名查询,我认为这个答案是正确的,它们不存在,但是如果您有一个存储库,您仍然有一个@Query注释。
而且,由于您使用的是自定义存储库,这并不意味着您也不能使用存储库接口,所以Spring数据允许您在不实现存储库的情况下实现它,请看这里。
发布于 2015-01-16 23:16:51
在Mongo中没有SQL注入这样的东西,因为Mongo根本不使用SQL语言。
在Spring中没有命名查询的概念,而是使用@Query注释存储库方法
public interface PersonRepository extends MongoRepository<Person, String>
@Query(value="{ 'firstname' : ?0 }", fields="{ 'firstname' : 1, 'lastname' : 1}")
List<Person> findByThePersonsFirstname(String firstname);
}https://stackoverflow.com/questions/27994063
复制相似问题