Wie ich in vielen Artikeln lesen, wenn ich JPA/Hibernate Abfrage verwenden, ist es gut, Parameter in meine Abfragen so SQL-Injektion vermieden wird. Like:JPA-Abfrage - SQL-Injektion in Positionsparameter jpa native Abfrage
Mein Problem ist, dass in einigen Fällen muss ich native Abfrage verwenden, wenn ich meine Abfrage erstellen.
Ich werde meine Entity Manager und createNativeQuery
verwenden. In diesem Fall sind die Parameter jedoch positionsabhängig. Wie:
select * from users where user_name = ? and user_surname = ?
Dann in meiner Anfrage werde ich die Methode setParameter(1, "name")
usw. verwenden, so ist dieser Fall „SQL-Injection-proof“ wie wenn in der parametrisierte Abfrage?
Ja, die Parameter werden bei Verwendung der setParameter-Methode korrekt ignoriert, sodass sie nur als Daten verwendet werden. Die Sicherheitsanfälligkeiten für die Einfügung treten auf, wenn Sie die Zeichenfolgen unter Verwendung von Benutzerparametern selbst erstellen und nicht ordnungsgemäß entkommen. – kevingallagher