Ich hatte eine Regex als erste Verteidigungslinie gegen XSS.
%Vor%Es ist tatsächlich von Kohana 2.3 .
Dies wird mit öffentlich eingegebenem Text ausgeführt (kein HTML) und verweigert die Eingabe, wenn dieser Test fehlschlägt. Der Text wird immer mit htmlspecialchars()
angezeigt (oder genauer gesagt, Kohana's Geschmack , er fügt den Zeichensatz unter anderem hinzu Dinge). Ich habe auch eine strip_tags()
auf die Ausgabe gesetzt.
Der Kunde hatte ein Problem, als er einen Text mit Klammern eingeben wollte. Ich dachte daran, den Helfer zu modifizieren oder zu erweitern, aber ich hatte auch einen Nebengedanken - wenn ich doppelte Anführungszeichen erlaube, gibt es wirklich irgendeinen Grund, warum ich überhaupt validieren muss?
Kann ich mich nur auf die Ausgabe verlassen?
Es ist niemals sicher, sich auf Regexes zu verlassen, um gefährliche XSS-Angriffe zu filtern. Und obwohl Sie sich nicht darauf verlassen, werden Ausgabe- und Eingabefilter bei richtiger Verwendung alle Arten von Angriffen beenden. Daher hat es keinen Sinn Regexes als "erste Verteidigungslinie" zu haben, wenn ihre Hilfe nicht wirklich benötigt wird. Wie Sie und Ihr Kunde herausgefunden haben, erschweren sie die Dinge nur, wenn sie so benutzt werden.
Lange Rede, kurzer Sinn: Wenn Sie html_entities
oder htmlspecialchars
verwenden, um Ihrer Ausgabe zu entkommen, brauchen Sie weder Regexes noch brauchen Sie wirklich strip_tags
.