Spring Data Mongo db注入中的标准是否安全?

时间:2019-06-09 13:52:27

标签: spring security spring-security spring-data spring-data-mongodb

我想公开一个api,它允许查询mongodb中另一个组件的数据。与此相符,该api将具有包含字段名称和值的参数。

如何防止ff进行NoSQL注入:

   Criteria.where(dbFieldName).is(name);
   dynamicQuery.addCriteria(nameCriteria);

1 个答案:

答案 0 :(得分:-1)

由于Mongo根本不使用SQL语言,因此在MongoDB中没有SQL注入之类的东西。

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

public interface EmployeeRepository extends MongoRepository<Employee, String>

  @Query(value="{ 'firstname' : ?0 }", fields="{ 'firstname' : 1, 'lastname' : 1}")
  List<Employee> findByEmployeeFirstName(String firstname);
}

如果您不这样做,而仅使用参数化/命名查询,那么您会很安全。

只有在像这样的SQL / JPQL字符串中内联用户控制的变量时,这才有可能

String sql = "SELECT u FROM Employee u WHERE id=" + id