如何在没有安全风险的情况下创建可编辑的PHP/HTML模板?

如何在没有安全风险的情况下创建可编辑的PHP/HTML模板?,php,html,kohana,Php,Html,Kohana,使用Kohana视图类,我希望管理员用户能够编辑HTML模板,最简单的方法是让他们直接编辑模板文件,即将其加载到文本区域并在提交时保存文件 但是恶意用户可能会在这个文本区域内编写php代码,并调用可能导致恶意行为的静态函数。我如何限制PHP只计算这个可编辑模板中的简单变量,而不允许函数调用和其他类型的逻辑 例如: view/template.php Hey $firstname, Best regards, $admin 不要解析php。使用file\u get\u contents将其读入

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

但是恶意用户可能会在这个文本区域内编写php代码,并调用可能导致恶意行为的静态函数。我如何限制PHP只计算这个可编辑模板中的简单变量,而不允许函数调用和其他类型的逻辑

例如: view/template.php

Hey $firstname,

Best regards,
$admin

不要解析php。使用
file\u get\u contents
将其读入字符串,并使用已知变量列表执行
str\u替换

e、 g


如果你想让他们做一些比你的例子更高级的事情,这显然会变得更复杂,但这正是它们的用途。

另一种选择是使用一些模板引擎,比如。

我喜欢你的答案,但这意味着我不能利用我的后端框架:对于这个特定的功能,这并不完全正确。您仍然可以使用视图,这将作为一个变量传递给父模板。无论如何,在控制器中,所有变量都将位于该变量旁边。另一种选择可能是从父模板中解析(而不是包括)Kohana::find_文件,但我认为这不是正确的位置
$replace = array(
    '$firstname' => $firstname,
    '$admin' => $admin
);
$template = file_get_contents('view/template.php');
$template = str_replace(array_keys($replace), array_values($replace), $template);