@@Gunnar Bittersmann
in Smarty
<output>{$answer|escape}</output>
Warum muss man das eigentlich tun? Warum escapet Smarty nicht schon von Haus aus?
Template-Engines werden ja verwerdet, um Daten ins HTML zu schreiben; nicht um HTML-Tags zu generieren. Es gibt zwar Fälle, wo man nicht unbedingt escapen muss (wenn bspw. $anwser
das Ergebnis einer numerischen Berechnung ist); mir will aber kein Fall einfallen, wo man nicht escapen darf.
Warum wird ___SMARTY0___
nicht gleich in htmlspecialchars($answer)
übersetzt?
Und jetzt, wo ich die Frage einmal aufgeschrieben habe, fällt mir auch die Antwort ein: 42.
Genauer: Der Einsatz von Template-Engines ist nicht auf Generierung von HTML beschränkt. Es könnten bspw. auch JavaScript- oder CSS- oder JSON- oder CSV-Ressourcen per Template-Engine generiert werden. In dem Fall wäre htmlspecialchars()
falsch und andere Filter angesagt.
LLAP 🖖
„Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann