Matze: Sicherheit, Code Injections u.ä.

Beitrag lesen

Hallo,

Also erstmal habe ich Textfelder, die ich per POST übergebe. Die Textfelder sind reine Texteingaben, einmal normal und einmal mehrzeilig. Ich denke hier braucht es den Befehl strip_tags() und zusätzlich bei mehrzeilig nl2br().

diese Funktionen brauchst du nur bei der Ausgabe über HTML.
Wobei du dir strip_tags sogar sparen kannst.

Bei einem spezifischen Fehler (rest ist mit JavaScript plausibilisiert) kommen die Daten mit GET wieder zurück ins Formular. Ich denke hier brauchts nur br2nl() bei mehrzeilig.

br2nl() gibt es nicht.
Wenn du die Daten wieder ins Feld setzen willst, gehe so vor <textarea name="text"...><?PHP echo htmlspecialchars($_GET['text']) ?></textarea> (die Zeilenumbrüche bleiben erhalten)

Vorher sollte mit den Daten nichts passieren.

Wenn du die Daten in eine DB speichern willst, gehe so vor
"INSERT .... '".mysql_real_escape_string($_GET['text'])."' " (die Zeilenumbrüche bleiben erhalten)

Vorher sollte mit den Daten nichts passieren.

Wenn du die Daten per html ausgeben willst, gehe so vor
echo nl2br(htmlspecialchars($textWoherAuchImmer));

Vorher sollte mit den Daten nichts passieren.

Du siehst, die Daten bleiben in ihrem Ursprünglichen Zustand und werden erst bei der Ausgabe in den entsprechenden Kontext gesetzt.
Es ist einfach blödsinn irgendwelche Daten mit htmlspecialchars(), nl2br() o.ä. z.B. in einer Datenbank zu speichern.
Kurz gesagt, willst du die Daten für HTML aufbereiten verwende htmlspecialchars() und niemand kann etwas 'böses' anstellen.
Willst du sie in eine DB speichern verwende mysql_real_escape_string(),
willst du sie innerhalb von PHP weiter verwenden benutze addslashes().

Nicht vergessen die Magic Quotes zu deaktivieren.

Grüße, Matze