HTML-Purifier dauert HTML als Eingabe und produziert HTML als Ausgabe. Sein Zweck ist es, dem Benutzer zu ermöglichen, html mit einige Tags, Attribute und Werte einzugeben, während andere herausgefiltert werden. Dies verwendet eine Whitelist, um Daten zu verhindern, die Skripts enthalten können. Das ist nützlich für so etwas wie einen WYSIWYG-Editor.
Benutzernamen und Passwörter auf der anderen Seite sind nicht HTML. Sie sind Klartext, so HTML-Luftreiniger ist keine Option. Der Versuch, HTML Purifier hier zu verwenden, würde entweder die Daten beschädigen oder XSS-Angriffe ermöglichen.
Zum Beispiel, es läßt die folgende durch unverändert, was XSS Probleme verursachen kann, wenn sie als Attributwert in einigen Elementen eingefügt:
" onclick="javascript:alert()" href="
Oder wenn jemand spezielle Symbole in ihrem Passwort zu verwenden versucht, und eingegeben :
<password
dann würde ihr Passwort leer werden, und es viel einfacher zu erraten machen.
Stattdessen sollten Sie den Text codieren. Die Codierung erforderlich ist, hängt vom Kontext ab, aber Sie können htmlentities
verwenden, wenn diese Werte ausgeben, wenn Sie Regel # 0 und Regel # 1 kleben, an den OWASP XSS Prevention Cheat Sheet
+1 für filter_var –
Für normale Texteingaben, filter_var sollte ausreichen. Für Text, der HTML-Tags zulässt, sollten Sie HTMLPurifier verwenden. – Nikko