【问题标题】:PHP as Template Engine: Restrict Functions and Make SafePHP 作为模板引擎:限制功能并确保安全
【发布时间】:2012-05-22 10:37:32
【问题描述】:

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

【问题讨论】:

  • 不。您需要选择为此目的而设计的“真正的”模板语言。但其中大多数仍然允许“危险”的事情发生。例如跨站点脚本是一个巨大的前端问题 - 它无法在控制器级别修复,因为您不知道视图将在页面架构中的哪个位置注入数据。听起来您的真正问题是您的发布流程管道中缺少合适的审核和批准阶段。

标签: php security model-view-controller templates


【解决方案1】:

我强烈推荐twig。 Twig 非常好,因为它非常模块化和可扩展,因此您最终会得到一个模板引擎,它既简单又复杂。

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

【讨论】:

    【解决方案2】:

    如果您真的想确保它的安全:请不要将 PHP 用于您的模板。 没有一种干净的方法可以将这些模板与您的应用程序代码区别开来。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-13
      • 2014-02-08
      • 2011-07-29
      • 2020-03-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多