spring SQL注入中的@Query注释安全吗?

对于Spring,传递给@Query注释的字符串的参数是否会被视为纯数据,例如,如果您使用的是ReadkStatement类或任何旨在防止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 注入的影响?


答案 1

看起来Spring Data只是围绕JPA的包装器。@Query

请参阅此 SO 答案:在 JPA 中是否存在 SQL 注入攻击?


答案 2

在查询中,您使用绑定变量而不是字符串串联(这将容易受到SQL注入的攻击),因此我认为您的示例在SQL注入的漏洞方面是节省的。


推荐