Gunnar Bittersmann: Pro/Contra Smarty

Beitrag lesen

@@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