2014-12-03 24 views
0

使用Kohana View類,我希望管理員用戶能夠編輯HTML模板,最簡單的方法是讓他們直接編輯模板文件,即將文件加載到textarea中,並在提交時保存文件。如何創建無安全風險的可編輯PHP/HTML模板?

但是惡意用戶可能會在此textarea內編寫php代碼並調用可能導致惡意行爲的靜態函數。如何限制PHP僅評估此可編輯模板中的簡單變量並禁止函數調用和其他類型的邏輯?

示例: 視圖/的template.php

Hey $firstname, 

Best regards, 
$admin 

回答

2

不解析PHP的。使用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是。

+0

我喜歡你的答案,但這意味着我不能使用我的後端框架:http://kohanaframework.org/3.0/guide/kohana/mvc/views#views這個特定的功能 – allenylzhou 2014-12-03 02:09:05

+0

這並不完全正確。您仍然可以使用視圖,這隻會最終成爲您傳遞給父模板的變量。無論如何,你將在控制器中擁有所有的變量。另一個選擇可能是從父模板內解析(而不是包含)Kohana :: find_file,但我認爲這不是正確的地方 – rjdown 2014-12-03 02:22:55

0

另一種選擇是使用一些模板引擎,如mustache