JPA Query - sql注入位置参数jpa本机查询

Pan*_*nos 5 sql hibernate jpa sql-injection

正如我在很多文章中读到的那样,当我使用JPA/Hibernate查询时,最好在我的查询中设置参数,以避免SQL注入.喜欢:

select user from User user where user.name = :name and user.surname = :surname
Run Code Online (Sandbox Code Playgroud)

我的问题是,在某些情况下,我需要在创建查询时使用本机查询.

我将使用我的实体经理和createNativeQuery.但在这种情况下,参数将是位置的.喜欢:

select * from users where user_name = ? and user_surname = ?
Run Code Online (Sandbox Code Playgroud)

然后在我的查询中我将使用方法setParameter(1, "name")等.所以这种情况下"sql注入证明"就像在参数化查询中?

kom*_*mer 4

如果您不使用字符串操作来构建查询,例如

"SELECT foo FROM bar Where id="+myParameter+" more sql ..."
Run Code Online (Sandbox Code Playgroud)

,那么你就不会有任何漏洞。