SQL Injection mit JPA und PS

E

Elch1988

Gast
Hallo community,

ich habe mehrere Fragen zu Java und SQL Injection.
Ich habe gerade die wiki Seite durchgelesen
SQL-Injection ? Wikipedia
Da steht man soll Prepared Statements verwenden, die sind sicher gegen SQL Injection

Anstatt
Java:
Statement stmt = con.createStatement();
ResultSet rset = stmt.executeQuery("SELECT spalte1 FROM tabelle WHERE spalte2 = '" 
                 + spalte2Wert + "';");
sollte Folgendes verwendet werden:
Java:
PreparedStatement pstmt = con.prepareStatement("SELECT spalte1 FROM tabelle WHERE spalte2 = ?");
pstmt.setString(1, spalte2Wert);
ResultSet rset = pstmt.executeQuery();
Versteh ich nicht ganz, ich kann doch in spalte 2 trotzdem ein SQL Befehl einschieben oder?
z.B. spalte2 = 42; UPDATE USER SET TYPE="admin" WHERE ID=23
Macht doch beide keinen Unterschied oder???

Eine andere Frage ist was passiert wenn man sowas mit JPA macht. Handelt JPA die Sonderzeichen für SQL. Also um bei dem gleichen Beispiel von der wiki Seite zu bleiben
Java:
public MyObject select(){

return em.find(MyObject.class, "42; UPDATE USER SET TYPE="admin" WHERE ID=23");

}
 
M

maki

Gast
Versteh ich nicht ganz, ich kann doch in spalte 2 trotzdem ein SQL Befehl einschieben oder?
z.B. spalte2 = 42; UPDATE USER SET TYPE="admin" WHERE ID=23
Macht doch beide keinen Unterschied oder???
Doch klar macht das einen Unterschied ;)
Ein PS sorgt dafür das Strings korrekt maskiert werden, keine Chance für SQL Injections.

JPA nutzt auch PS.
 

Neue Themen


Oben