Ingo Turski: Sicherheit von POST

Beitrag lesen

Hi,

und jetzt noch mal die Frage zu strip_tags():
wenn ich <a> erlaube kann ich trotzdem eingeben:
<a href="JavaScript:alert('Hallo');">test</a>
und vorausgesetzt ich wende stripslashes() darauf an und gebe das ganze einfach aus könnte ich das javascript auch ausführen.

Du machst einen Denkfehler: PHP setzt weder HTML-Code um noch führt es Javascript aus und auch Slashes in Strings sind zunächst einfach nur Zeichen. Daher ist es unsinnig, die Daten pauschal zu verstümmeln und dann so abzuspeichern.
Die Rohdaten müssen nur im jeweiligen Kontext passend abgesichert werden. In bestimmten Fällen bei der Übergabe an PHP-Funktionen über addslashes(), an mySQL-Queries über mysql_real_escape_string(), und für die HTML-Ausgabe über htmlspecialchars().

strip_tags() ist in aller Regel unpassend, denn diese Funktion greift sich alles fast zwischen <>, auch harmlose Texte, die zufällig so vom übrigen Text abgegrenzt werden.
echo htmlspecialchars("<Test>") hingegen gibt diesen Text aus, ohne dass Browser versuchen, HTML-Code umzusetzen.

Ein Feld in meinem Projekt soll HTML enthalten dürfen, ist das etwa ein ding der unmachbarkeit?

nö. Dazu gibt es zwei Möglichkeiten:
1. BBcode
2. Manuelle Ersetzung aller unerwünschten Tags

freundliche Grüße
Ingo