PHP作为模板引擎:限制功能并使安全


PHP as Template Engine: Restrict Functions and Make Safe

我在MVC风格的应用程序中使用PHP作为模板引擎。但是,我们现在需要通过 Web 前端编辑模板。有没有办法使它安全可靠,因此有权编辑模板的用户就无法在服务器上运行危险代码?或者,是否应该放弃使用PHP作为模板引擎,并使用许多其他模板引擎之一,例如Smarty?

我强烈推荐树枝。Twig 非常好,因为它非常模块化且可扩展,因此您最终会得到一个模板引擎,它随心所欲地简单和复杂。

在生产中打开缓存时,它也非常快。它也非常安全,因为它可以清理和过滤显示给用户的内容,因此编辑模板的人不能执行任意的PHP代码。

如果你真的想让它安全:不要在你的模板中使用 PHP。没有一种干净的方法可以将这些模板与应用程序代码区别对待。

实际上,您正在寻找的是像Smarty或FLOW3的FLUID(我更喜欢后者(这样的模板引擎,因为它们正是为这种需求(以及其他(而构建的。