【发布时间】:2014-03-06 17:04:31
【问题描述】:
我有一个想法,将模板放入数据库中,并为设计人员提供直接从 CMS 面板编辑模板的可能性。但困扰我的是安全问题。如果我们能够将 python 命令直接放在模板中,那怎么可能安全。如果我在 mako 模板中有这样的东西:
<%!
import os
os.system('rm /var/www/env/harmless.txt')
%>
它将成功执行,并且将删除harmless.txt。我应该找到除 Mako 之外的另一个模板引擎,还是我可以以某种方式配置 Mako 以防止有害的代码注入?另一方面,模板中使用的一些 python 命令非常有用,例如内联 if 语句。
【问题讨论】:
-
如果人们运行自己的 cms,我并不太担心。为什么他们会试图伤害?如果您担心安全性,那么只需在沙箱中运行 python。
-
您可以通过使用 javascript 模板系统完全消除该问题,并在客户端执行所有呈现(和代码执行)。 EJS 和 Teacup 各有千秋,虽然 teacup 是基于 coffeescript,如果你只是使用直接的 JS,这会增加额外的复杂性。