Um Cross Site Scripting weitestgehend zu verhindern, kann man ja htmlspecialchars() verwenden. In meiner View-Klasse registriere ich daher einen globalen XSS-Filter, der diese Funktion auf alle Variablen ausführt:
Die Templates verzichten vollständig auf echo, es sollten nur die Methoden $this->show($var) oder $this->showVar($name) verwendet werden, damit alle registrierten Filter auch greifen.
Meine Frage lautet: Ist das Vorgehen sinnvoll? Der Vorteil ist, dass sich eine vergessene escape-Anweisung nicht später rächt. Andererseits wird dadurch htmlspecialchars() auf wirklich jede Template-Variable angewendet, also auch auf Integers und Strings, die keine Benutzereingaben sind.
Wirkt sich das vielleicht zu sehr auf die Performance aus?
PHP-Code:
$view->addGlobalFilter(new XSSFilter());
Meine Frage lautet: Ist das Vorgehen sinnvoll? Der Vorteil ist, dass sich eine vergessene escape-Anweisung nicht später rächt. Andererseits wird dadurch htmlspecialchars() auf wirklich jede Template-Variable angewendet, also auch auf Integers und Strings, die keine Benutzereingaben sind.
Wirkt sich das vielleicht zu sehr auf die Performance aus?
Kommentar