正如我在很多文章中讀到的,當我使用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