Como leo en muchos artículos, cuando uso la consulta JPA/Hibernate, es bueno establecer parámetros en mis consultas para evitar la inyección SQL. Me gusta:Consulta JPA - inyección sql en parámetros posicionales jpa consulta nativa
select user from User user where user.name = :name and user.surname = :surname
Mi problema es que, en algunos casos, necesito utilizar la consulta nativa cuando creo mi consulta.
Usaré mi administrador de entidad y createNativeQuery
. Pero en este caso los parámetros serán posicionales. Al igual que:
select * from users where user_name = ? and user_surname = ?
Luego, en mi consulta que se utilice el método setParameter(1, "name")
etc. Así es este caso "inyección SQL prueba" como cuando en la consulta con parámetros?
Sí, escapará correctamente de los parámetros cuando use el método setParameter para que solo se use como datos. Las vulnerabilidades de inyección surgen al construir las cadenas usted mismo utilizando los parámetros proporcionados por el usuario y no escapar correctamente. – kevingallagher