Hinweis: Ich kümmere mich um SQL-Injection und output Ausgabe anderswo - diese Frage betrifft nur Eingabe-Filterung, danke.Benutzereingabefilter - muss ich HTML filtern?
Ich bin gerade dabei, meine Benutzereingabefilterfunktionen zu refaktorieren. Vor dem Passieren der GET/POST-Parameter auf einen typspezifischen Filter mit filter_var() ich folgendes:
- Kontrolle der Parameter Codierung mit mb_detect_encoding()
- konvertieren auf UTF-8 mit iconv() (mit // IGNORE), wenn es nicht ASCII oder UTF-8
- sauberen weißen Räume mit a function found on GnuCitizen.org
- das Ergebnis durch strip_tags() passieren - keine Tags überhaupt erlaubt, Abschriften nur
Jetzt die Frage: macht es immer noch Sinn, den Parameter an einen Filter wie htmLawed oder HTML Purifier zu übergeben, oder kann ich den Eingang als sicher betrachten? Es scheint mir, dass diese beiden sich hauptsächlich auf die Granularität der erlaubten HTML-Elemente und -Attribute (die ich nicht interessiert, da ich alles entferne) unterscheiden, aber htmLawed-Dokumente haben einen Abschnitt über 'dangerous characters', der darauf hindeutet, dass es einen Grund gibt um es zu benutzen. In diesem Fall, was wäre eine vernünftige Konfiguration dafür?
Ein gefährliches Zeichen könnten UTF-8-Steuerzeichen sein. – Jacco
Irgendwelche Vorschläge, wie man sie loswerden kann? – djn
Ich verstehe nicht wirklich, dass es bei SQL Injection nur darum geht, unangenehme Benutzereingaben in einer SQL-Abfrage zu verhindern. In der Tat sind die meisten Sicherheitslücken auf den unangenehmen INPUT zurückzuführen, nicht auf die Ausgabe. Diese Schwachstellen werden als "Taint and Sink" bezeichnet. – rook