FreshMarker Ausgabeformate und Autoescaping

Bei der Verwendung einer Template-Engine ist die größte Herausforderung das Einfügen der variablen Inhalte in das Dokument. Hierbei ist neben der technischen Realisierung auch die Sicherheit zu beachten. Allzu leicht könnten sonst bösartige Inhalte in das generierte Dokument gelangen. Je nach Verwendung als E-Mail, Webseite oder Konfiguration wären so diverse Angriffsszenarien denkbar. Das Problem der Absicherung gegen jede Art von Injektion wird in FreshMarker durch die Verwendung spezieller Ausgabeformate umgesetzt. Je nach Ausgabeformat werden dann spezielle Zeichen in den Interpolations maskiert.

Die FreshMarker Grammatik

Im ersten Beitrag wurde aus der Vogelperspektive beschrieben, wie die FreshMarker Template-Engine zu bedienen ist. Ausgelassen wurde dabei, wie aus der Textdarstellung eines Templates eine Instanz der Klasse Template generiert wird. Um ein Template syntaktisch korrekt und sauber zu verarbeiten, bietet es sich an, einen passenden Parser zu verwenden. Mit dem Parser-Generator JavaCC 21 von Jonathan Revusky steht das passende Werkzeug zum Erzeugen eines eigenen Parsers zur Verfügung. JavaCC 21 liefert erfreulicherweise auch eine eigene FreeMarker Grammatik, mit der die eigene Entwicklung zügig beginnen kann.

FreshMarker, eine frische Template Engine für Java

Dieser und weitere Beiträge werden sich mit der Template-Engine FreshMarker beschäftigen. Das Besondere an dieser Template-Engine ist, dass sie noch nicht existiert. Die Beiträge werden, parallel zur Entwicklung der Template-Engine, technische Entscheidungen und verwendete Konzepte beleuchten.