# Sonderzeichen codieren



## Kerwin (14. Februar 2008)

Hallo liebe Commu

Derzeit arbeite ich an einem kleinem Login was auch alles wunderbar funktioniert. Aus früheren PHP-Zeiten kenne ich noch die Problematik mit den SQL-Injections was ja auch heute noch ein sicherheitsrelevantes Problem ist.
Problem ist also, wenn ich als Benutzernamen hansmeier" eingebe im meinen JTextfield und ich dieses JTextfield auslese in meinem SQL-Query, kommt halt logisch eine Fehlermeldung bzw wenn man es richtig angeht, eine Injection.

Nun könnte ich dahergehen und eine RegularExpression anlegen wo nur Zahlen und Buchstaben eingetragen werden können. Das ist aber für mich nicht die eigentliche Lösung des Problems.

Gibt es in Java so etwas wie htmlspecialchars in PHP. Oder vielleicht kann man den JDBC-Treiber dafür missbrauchen? Ich weiß leider nicht welche Möglichkeiten ich in Java habe.

Über eine kleine Antwort (konstruktiv ^^) würd ich mich sehr freuen.

MfG

Robert


----------



## MeinerEiner_80 (14. Februar 2008)

Moin!
Ich weis nicht so recht, ob ich dich richtig verstehe...
Was ich dir sagen ist, ist das es die Möglichkeit gibt, SQL Injections von vorneherein auszuschliessen, und zwar über die Prepared Statements:

```
PreparedStatement pstmt = con.prepareStatement("SELECT column FROM table WHERE colVal = ?");
pstmt.setString(1, "colVal");
ResultSet rset = pstmt.executeQuery();
```

*grüssle*
MeinerEiner


----------



## Kerwin (15. Februar 2008)

Na da hast du mich glaube richtig verstanden ^^.

Prepared Statements hab ich irgendwo schonmal gehört, wusste aber net genau das es dort vorbeugend wirken kann ^^. Ich danke dir für diesen Hinweis und damit klappt das auch mit Sonderzeicheneingabe wie " . 

Die Lösung mit den Prepared Statements finde ich sehr gut und werde diese auch umsetzen/beibehalten. Aus reiner neugierde würde mich aber noch interessieren, ob es in Java dafür eine Methode gibt wie bei php mit htmlspecialchars, also wo aus einem  > " < ein > \" < wird.


----------

