spring SQL 注入中的@Query注解安全吗?
Is the @Query annotation in spring SQL Injection safe?
对于 Spring,将传递给 @Query 注释的字符串参数作为纯数据处理,例如,如果您使用 PreparedStatement class 或任何防止 SQL 注入的方法?
final String MY_QUERY = "SELECT * FROM some_table WHERE some_column = ?1";
@Query(value=MY_QUERY, nativeQuery = true)
List<SomeEntity> findResults(String potentiallyMaliciousUserInput);
底线:上面的代码是否容易受到 SQL 注入?
看起来 Spring Data 的 @Query
只是 JPA 的包装器
看到这个 SO 答案:Are SQL injection attacks possible in JPA?
在查询中您使用绑定变量而不是字符串连接(这将容易受到 SQL 注入的攻击),所以我认为您的示例在 SQL 注入的漏洞方面是安全的。
对于 Spring,将传递给 @Query 注释的字符串参数作为纯数据处理,例如,如果您使用 PreparedStatement class 或任何防止 SQL 注入的方法?
final String MY_QUERY = "SELECT * FROM some_table WHERE some_column = ?1";
@Query(value=MY_QUERY, nativeQuery = true)
List<SomeEntity> findResults(String potentiallyMaliciousUserInput);
底线:上面的代码是否容易受到 SQL 注入?
看起来 Spring Data 的 @Query
只是 JPA 的包装器
看到这个 SO 答案:Are SQL injection attacks possible in JPA?
在查询中您使用绑定变量而不是字符串连接(这将容易受到 SQL 注入的攻击),所以我认为您的示例在 SQL 注入的漏洞方面是安全的。