2017-01-15 10 views
0

Ich versuche, Informationen über Spring Security JPA zu finden und wenn Methoden wie .save() werden aus SQL-Injection geschützt.Ist Spring Data JPA sicher vor SQL-Injection

Zum Beispiel habe ich Objekt Customer., die ich möchte meine Datenbank beharren. Ich verwende die CustomerRepository Spring-Implementierung, um mit dieser Entität zu arbeiten. Der Konstruktor des Kunden verwendet Parameter vom Benutzer. Wenn alles inszeniert wird, rufe ich .save() an. Ist dies sicher gegen SQL-Injektion oder sollte ich zuerst die Überprüfung durchführen?

Antwort

2

.save() sicher ist, nur die Verwendung von nativen Abfragen ist verwundbar.

List results = entityManager.createNativeQuery("Select * from Customer where name = " + name).getResultList(); 

Sie können native Abfragen auch sichern, wenn Sie Parameter verwenden.

Query sqlQuery = entityManager.createNativeQuery("Select * from Customer where name = ?", Customer.class); 
List results = sqlQuery.setParameter(1, "John Doe").getResultList(); 
+0

so zum Beispiel, wenn der Kunde Objekt Feldnamen hat, und es festgelegt ist eine Zeichenfolge sein: Select * von Kunden where name = ‚test‘ und ich verwende save() Methode, nichts falsch mit Tisch wiill passieren? – Dago

+0

Der JDBC-Treiber entschlüsselt diese Daten vor der Ausführung der Abfrage entsprechend. – jklee