[Python-de] bottle-template: syntax error

Walter Dörwald walter at livinglogic.de
Do Sep 5 01:45:34 CEST 2013


On 03.09.13 15:56, Marcel Hellkamp wrote:
> On 03.09.2013 14:52, Christopher Arndt wrote:
>> On 03.09.2013 09:24, Michael Ströder wrote:
>>> Peter Otten wrote:
>>>> (und bottle verwendet eval() für templates):
>>> Ist eval() speziell in Web-Anwendungen nicht ziemlich unangebracht -
>>> insbesondere beim Rendering von Web-Seiten, welche wiederrum Benutzereingaben
>>> enthalten können?
>> Es wäre für mich auf jeden Fall ein weiterer Grund (neben anderen
>> Erwägungen, wie mehr Features etc.), gleich eine zusätzliche
>> Template-Engine, wie z.B. Jinja2, mit bottle zu verwenden.
>
> Um das mal klar zu stellen:
>
> (Fast) jede Template Engine übersetzt Template Code in Python Code und
> jagt den durch eval(). Auch Jinja2, Mako, Cheeta und Andere. Das ist die
> einzige möglichkeit, einigermaßen schnelle Templates zu bekommen.

Ich schraube gerade an einer Templating-Sprache rum, die genau das nicht 
tut: http://www.livinglogic.de/Python/ul4c/Howto.html

Templates werden hier nicht in Python-Code umgewandelt, sondern von 
einem Compiler kompiliert. Damit kann man dann auch dem Kunden erlauben, 
selber Templates zu bauen, weil er keine bösen Dinge tun kann (naja, 
außer evtl. Endlosschleifen bauen).

> Template Dateien sind vom Sicherheitsaspekt her ausführbare Programme.
> Wenn im Template Schadcode steht, dann wird der auch ausgeführt. Daher
> sollte man Benutzern nie erlauben, eigene Templates hoch zu laden, genau
> so wie es eine doofe Idee ist, Python code ungeprüft auf dem Server aus
> zu führen.

> [...]

Servus,
    Walter



Mehr Informationen über die Mailingliste python-de