4

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

我想我可以随时进入并将这些命令放入mod_sec我不想运行的主要命令中。但是这样的配置是不够的。我想禁用shell_exec但只允许shell_exec使用某些命令运行,确切地说是两个。

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

4

1 回答 1

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

一些特别说明:让用户访问参数是自找麻烦。您最好对所有内容进行硬编码,而不是让用户能够修改任何参数。

于 2014-09-11T12:05:26.590 回答