-1

有没有人准备好尽可能多的安全/不可利用的 PHP 函数的白名单?

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

一切对我来说似乎都是安全的,但用户需要函数,以便它们可以用作 Smarty 修饰符。我可以将它们一一列入白名单,但这需要付出很多努力并且容易出错。我只找到了一个黑名单——可利用的 PHP 函数

这是一个有点相似的问题,但没有合适的答案(对于我的情况)。

4

2 回答 2

2

你看到这么棒的话题了吗? 可利用的 PHP 函数

因此,您可以在允许的功能列表和您脑海中的危险功能列表之间创建“array_diff”。

于 2012-05-11T10:23:21.053 回答
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',
);
于 2012-04-19T10:23:28.663 回答