Ich nehme an, dass Sie JSP verwenden.
Nur entkommen während Anzeige nur. Dort ist das JSTL<c:out>
Tag perfekt geeignet. Es entkoppelt standardmäßig HTML-Entities. Verwenden Sie diese Option, um alle benutzergesteuerte Eingaben anzuzeigen, z. B. Anforderungs-URL, Anforderungsheader und Anforderungsparameter.
z.
<input type="text" name="foo" value="<c:out value="${param.foo}" />">
während der Eingabe Flüchten ist nicht erforderlich. XSS schadet weder in Java-Code noch in SQL-Datenbanken. Auf der anderen Seite würden Sie auch lieber Daten unverändert in DB speichern, damit Sie immer noch sehen können, was der Benutzer eigentlich eingegeben hat, damit Sie bei Mailicious-Usern ggf. soziale Aktionen durchführen können.
Wenn Sie wissen möchten, was während der Eingabe zu entkommen ist, wäre es SQL injection. Verwenden Sie in diesem Fall einfach PreparedStatement
anstelle von regulär Statement
, wenn Sie beliebige benutzergesteuerte Eingabe in der Datenbank speichern möchten.
z.
create = connection.prepareStatement("INSERT INTO user (username, password) VALUES (?, MD5(?))");
create.setString(1, username);
create.setString(2, password);
create.executeUpdate();
Joel Spolsky ist * Making Code Look Wrong * Artikel - http://www.joelonsoftware.com/articles/Wrong.html - ist über diese genaue Art von Problem. – mob
Ich mochte diesen Artikel wirklich :) – Kyle
Gut gelesen in der Tat. – pastapockets