Matthias Apsel: Formularfelder per EMail versenden, sicher! SO

Beitrag lesen

Om nah hoo pez nyeetz, Kasandra!

diese würde ich gerne so sichern, das kein Schadcode beim versenden drin ist.

Wenn ich es richtig verstehe, müsste es so funktionieren und sicher sein:

mysql_real_escape_string(htmlentities('Daten aus dem Formular'));

Du musst immer nur das escapen, was tatsächlich Schaden anrichten kann. Also beispielsweise SQL-Syntax, wenn du die Daten in einer Datenbank speichern möchtest.

⇒ mysql_real_escape_string('Daten aus dem Formular');

Die besonderen HTML-Zeichen können und sollen dabei ruhig in der DB stehen. htmlentities ist dabei natürlich der overkill, denn, eine sinnvolle Zeichenkodierung (UTF-8) und deren korrekte Angabe vorausgesetzt, müssen die Umlaute nicht verstümmelt werden. Du kannst also vergessen, dass du je wusstest, dass die Funktion htmlentities existiert. ;-)

Bei der Ausgabe im HTML-Kontext können natürlich auch wieder Probleme auftauchen. Dafür ist htmlspecialchars (konvertiert nur >, <, & sowie je nach Einstellung Anführungszeichen) ausreichend.

⇒ htmlspecialchars('Daten aus der Datenbank')

Dann kann dir auch keiner schädlichen, nervigen JavaScript-Code unerschieben, weil aus
„<script … >“ „&lt;script … &gt;“ wird, was im Browser wieder als „<script … >“ dargestellt wird ohne ein HTML-Tag zu sein.

Matthias

--
Der Unterschied zwischen Java und JavaScript ist größer als der zwischen xi und Xiberg.