正如我在很多文章中读到的,当我使用JPA/Hibernate查询时,在我的查询中设置参数是很好的,所以可以避免SQL注入。像:JPA查询 - 位置参数sql注入jpa本地查询
select user from User user where user.name = :name and user.surname = :surname
我的问题是,在我创建我的查询时,我需要使用本机查询。
我将使用我的实体经理和createNativeQuery
。但在这种情况下,参数将是位置的。像:
select * from users where user_name = ? and user_surname = ?
然后在我查询我会用像在参数化查询时,该方法setParameter(1, "name")
等,所以是这样的情况下,“SQL注入证据”?
是的,使用setParameter方法时,它将正确地转义参数,以便它仅用作数据。使用用户提供的参数自己构建字符串时出现注入漏洞,并且不能正确地转义。 – kevingallagher 2012-04-06 19:33:52