不可利用的PHP功能(白名单)

时间:2012-04-19 10:04:09

标签: php smarty exploit

有没有人准备好尽可能多的安全/无法使用的PHP功能的白名单?

我正在构建一个Web应用程序,用户可以在其中输入Smarty模板(Smarty版本3)。应用程序通过Smarty运行此模板(适当的Smarty_Security到位),然后使用HTMLPurifier清除生成的HTML。

对我来说,一切似乎都很安全,但用户需要功能,因此可以将它们用作Smarty修饰符。我可以逐个将它们列入白名单,但这需要花费很多精力并且容易出错。我只找到了blacklist - Exploitable PHP functions

这有点similar question,但没有合适的答案(对我而言)。

2 个答案:

答案 0 :(得分:2)

Smarty_Security

开始
$php_functions = array(
    'isset', 'empty',
    'count', 'sizeof',
    'in_array', 'is_array',
    'time',
    'nl2br',
);

为数学添加(可能是安全的)操作以及更多日期和数组内容:

$php_functions = array(
    'isset', 'empty',
    'count', 'sizeof',
    'in_array', 'is_array', 'join', 'explode'
    'time', 'date', 'strtotime', 'strftime'
    'nl2br',
    'intval', 'floatval', 'rand', 'srand', 
    'log', 'log10', 'pi', 'pow', 'sqrt', 'exp', 
    'floor', 'ceil', 'round', 'min', 'max', 'abs',
    'sin', 'cos', 'tan', 'atan', 'atan2',
);

答案 1 :(得分:2)

你看到那个很棒的话题吗? Exploitable PHP functions

因此,您可以在允许的功能列表和危险功能列表之间制作“array_diff”。