PHP Shell_exec仅适用于某些命令

时间:2012-10-09 15:48:08

标签: php linux shell-exec

除了某些可以列入白名单的命令外,有没有办法禁用shell_exec

我认为我总是可以进入并将这些命令放入mod_sec,这是我不想运行的主要命令。但这种配置还不够。我想禁用shell_exec但允许shell_exec仅使用某些命令运行,确切地说是两个命令。

我正在运行CentOS,Cpanel和PHP 5.2.17。

1 个答案:

答案 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");

一些特别说明:让用户访问参数是一件麻烦事。你最好硬编码一切,而不是让用户能够修改任何参数。