[Python-de] bottle-template: syntax error

Marcel Hellkamp marc at gsites.de
Di Sep 3 15:56:40 CEST 2013


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.

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.

Die Benutzer-Eingaben, die in ein Template hinein gerendert sind, sind
etwas völlig anderes. Die werden nicht ausgeführt oder durch eval()
gejagt. Das ist bei keiner Template Engine so, das wäre ja auch
reichlich blöd.




Mehr Informationen über die Mailingliste python-de