首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mongodb转义参数的spring,以避免SQL注入

mongodb转义参数的spring,以避免SQL注入
EN

Stack Overflow用户
提问于 2015-01-16 22:53:55
回答 2查看 3.8K关注 0票数 3

我是一个新的-通过使用spring与MongoDB。

我使用的是Dao模式,它使用MongoOperations对象。

由于我在RDBMS和JPA方面有很多经验,所以我们通常使用setParameter,它还负责逃逸和避免SQL注入。

我想知道MongoDB在春天是否有这样的想法。我找不到,但我可能漏掉了什么。我不得不说,我仍然不确定是否存在使用Mongo的SQL注入风险。

另外,是否有一种方法可以在MongoDB中创建命名查询?

谢谢你们所有人。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-09 16:22:57

有非常类似于SQL的东西,即、NOSQL注入

特殊字符是不同的,但概念是相同的:用户可以控制/修改/破坏请求。

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

有一种方法可以验证,下面是一个OWASP页面可以帮助您进行测试。

基本的方法是验证您的请求是否正确地转义了' " \ ; { },甚至更多。

看起来正确地转义了这些数据,但我不知道它是否完全安全。

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

而且,由于您使用的是自定义存储库,这并不意味着您也不能使用存储库接口,所以Spring数据允许您在不实现存储库的情况下实现它,请看这里

票数 2
EN

Stack Overflow用户

发布于 2015-01-16 23:16:51

在Mongo中没有SQL注入这样的东西,因为Mongo根本不使用SQL语言。

在Spring中没有命名查询的概念,而是使用@Query注释存储库方法

代码语言:javascript
复制
public interface PersonRepository extends MongoRepository<Person, String>

  @Query(value="{ 'firstname' : ?0 }", fields="{ 'firstname' : 1, 'lastname' : 1}")
  List<Person> findByThePersonsFirstname(String firstname);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27994063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档