Python中不受信任的模板 - 什么是安全的库?

时间:2009-11-11 17:43:15

标签: python email templates

我正在构建一个将在几个Python应用程序中使用的库。它从RMDBS获取多语言电子邮件模板,然后在发送电子邮件之前,将在Python上对模板执行变量替换。

除了变量替换之外,我还需要模板库来支持模板中的if,elif和for语句。

我在大多数项目中使用Mako,并且还查看了Tempita,因为它没有提供我不需要的许多功能。

我担心的是不受信任的代码执行 - 有人能指出我的Python模板解决方案,它不支持代码执行,还是允许我禁用它?

2 个答案:

答案 0 :(得分:4)

来自Django book

  

因此,在Django模板中直接调用Python代码是不可能的。所有“编程”从根本上限于模板标签可以做的范围。编写可以执行任意操作的自定义模板标签是可能的,但开箱即用的Django模板标签故意不允许任意Python代码执行。

尝试Django templates。在Django应用程序之外进行设置有点棘手 - 与DJANGO_SETTINGS_MODULE有关,搜索 - 但可能会受到信任。

答案 1 :(得分:3)

你签出了Jinja2吗?这几乎就是你所说的,它是一个功能强大的组合,同时保持简单,而不是给设计师太多的力量。 :)

如果您使用过Django的模板系统,它非常相似(如果不是基于?)Jinja。