有没有人准备好尽可能多的安全/无法使用的PHP功能的白名单?
我正在构建一个Web应用程序,用户可以在其中输入Smarty模板(Smarty版本3)。应用程序通过Smarty运行此模板(适当的Smarty_Security到位),然后使用HTMLPurifier清除生成的HTML。
对我来说,一切似乎都很安全,但用户需要功能,因此可以将它们用作Smarty修饰符。我可以逐个将它们列入白名单,但这需要花费很多精力并且容易出错。我只找到了blacklist - Exploitable PHP functions。
这有点similar question,但没有合适的答案(对我而言)。
答案 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”。