Jak czytałem w wielu artykułach, kiedy używam kwerendy JPA/Hibernate, dobrze jest ustawić parametry w moich zapytaniach, aby uniknąć iniekcji SQL. Podobnie jak:Kwerenda JPA - iniekcja sql w parametrach pozycyjnych jpa natywne zapytanie
select user from User user where user.name = :name and user.surname = :surname
Mój problem polega na tym, że w niektórych przypadkach potrzebuję użyć zapytania natywnego podczas tworzenia zapytania.
Będę używać mojego menedżera podmiotu i createNativeQuery
. Ale w tym przypadku parametry będą pozycyjne. Jak:
select * from users where user_name = ? and user_surname = ?
Wtedy w mojej kwerendy I użyje metody setParameter(1, "name")
itd. Więc jest to przypadek „SQL injection dowód” jak wtedy, gdy w zapytaniu parametryzowanego?
Tak, będzie poprawnie wymykała się parametrom podczas korzystania z metody setParameter tak, aby była używana tylko jako dane. Luki iniekcyjne pojawiają się podczas budowania łańcuchów przy użyciu parametrów dostarczanych przez użytkownika i nie ucieka prawidłowo. – kevingallagher