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
sollte Folgendes verwendet werden:
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
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 + "';");
Java:
PreparedStatement pstmt = con.prepareStatement("SELECT spalte1 FROM tabelle WHERE spalte2 = ?");
pstmt.setString(1, spalte2Wert);
ResultSet rset = pstmt.executeQuery();
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");
}