【问题标题】:How do I create an editable PHP/HTML template without security risk?如何创建没有安全风险的可编辑 PHP/HTML 模板?
【发布时间】:2014-12-03 01:45:46
【问题描述】:

使用 Kohana View 类,我希望管理员用户能够编辑 HTML 模板,最简单的方法是让他们直接编辑模板文件,即将其加载到文本区域并在提交时保存文件。

但恶意用户可能会在此文本区域内编写 php 代码并调用可能导致恶意行为的静态函数。如何限制 PHP 仅评估此可编辑模板中的简单变量并禁止函数调用和其他类型的逻辑?

示例: 查看/template.php

Hey $firstname,

Best regards,
$admin

【问题讨论】:

    标签: php html kohana


    【解决方案1】:

    不要解析 php.ini 文件。使用file_get_contents 将其读入字符串,并使用已知变量列表执行str_replace

    例如

    $replace = array(
        '$firstname' => $firstname,
        '$admin' => $admin
    );
    $template = file_get_contents('view/template.php');
    $template = str_replace(array_keys($replace), array_values($replace), $template);
    

    如果你想让他们做比你的例子更高级的事情,这显然会变得更复杂,但这就是 smarty 之类的东西。

    【讨论】:

    • 我喜欢您的回答,但这意味着我无法使用我的后端框架:kohanaframework.org/3.0/guide/kohana/mvc/views#views 用于此特定功能
    • 这并不完全正确。您仍然可以使用视图,这最终会成为您传递给父模板的变量。无论如何,您将在控制器中拥有所有变量。另一种选择可能是从父模板中解析(而不是包含)Kohana::find_file,但我认为这不是正确的地方
    【解决方案2】:

    另一种选择是使用一些模板引擎,例如mustache

    【讨论】:

      猜你喜欢
      • 2011-03-25
      • 2010-10-17
      • 2011-04-05
      • 2017-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多