Ich hatte eine Regex als erste Verteidigungslinie gegen XSS.Regex als erste Verteidigungslinie gegen XSS
public static function standard_text($str)
{
// pL matches letters
// pN matches numbers
// pZ matches whitespace
// pPc matches underscores
// pPd matches dashes
// pPo matches normal puncuation
return (bool) preg_match('/^[\pL\pN\pZ\p{Pc}\p{Pd}\p{Po}]++$/uD', (string) $str);
}
Es ist eigentlich von Kohana 2.3.
Dies läuft auf öffentlich eingegebenem Text (kein HTML jemals), und verweigert die Eingabe, wenn es diesen Test nicht besteht. Der Text wird immer mit htmlspecialchars()
(oder genauer gesagt Kohana's flavour angezeigt, fügt unter anderem den Zeichensatz hinzu). Ich habe auch einen strip_tags()
am Ausgang gesetzt.
Der Client hatte ein Problem, wenn 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?