是否可以限制Smarty模板中的可用标签/功能?

问题描述:

我们有一个Web应用程序(你可以说这是一个CMS),我们允许用户编辑自己的模板是否可以限制Smarty模板中的可用标签/功能?

我们已经例如:

article.template 
page.template 

现在,我们要限制哪些用户可以或不可以做在他们的模板中。当然,使用PHP将被禁止(并且Smarty允许我们禁止PHP)。但是有可能定义Smarty的功能或循环,他们可以或不可以使用?

我在Smarty文档中找不到这个。我们需要一个易于使用的模板系统,可以做到这一点。

+0

我会将此等同于驾驶没有方向盘的汽车。如果你没有跟踪系统,你如何跟踪人们?此外为什么PHP禁止?你还有什么能让聪明人工作的? – mcgrailm 2010-03-30 16:40:32

+0

PHP是被禁止的,因为我们不希望人们去运行命令或从我们那里获取系统信息。我们只向用户提供数据,用户可以按照他们喜欢的方式呈现数据。我们使用Zend Framework来处理其他事情 – Jorre 2010-03-31 08:11:17

如果您使用的是Smarty版本3:是的,这是可能的。查看Smarty_Security课程。

请注意,您还需要限制他们可以生成的HTML(如果他们的HTML将被其他人查看)。我会为此推荐HTMLPurifier