除了某些可以列入白名单的命令外,有没有办法禁用shell_exec
?
我认为我总是可以进入并将这些命令放入mod_sec
,这是我不想运行的主要命令。但这种配置还不够。我想禁用shell_exec
但允许shell_exec
仅使用某些命令运行,确切地说是两个命令。
我正在运行CentOS,Cpanel和PHP 5.2.17。
答案 0 :(得分:1)
这本身并不是一个不可行/白名单,但如果正确完成,它会为用户提供受监督和严格控制的访问权限,只能访问您在代码中指定的那些shell命令。
$Ops = array(
'function1' => function($parameter){
DO PARAMETER CHECK HERE;
shell_exec("CommandThatIsSafetoPerform" + parameter here);
},
'function2' => function($parameter){
DO PARAMETER CHECK HERE;
shell_exec("CommandThatIsSafetoPerform" + parameter here);
},
'function3' => function($parameter){
DO PARAMETER CHECK HERE;
shell_exec("CommandThatIsSafetoPerform" + parameter here);
},
);
然后打电话使用这样的东西:
call_user_func(Ops["function1"], "your parameter here");
一些特别说明:让用户访问参数是一件麻烦事。你最好硬编码一切,而不是让用户能够修改任何参数。