Php 通过允许文件的白名单限制外部二进制程序的执行

Php 通过允许文件的白名单限制外部二进制程序的执行,php,security,Php,Security,在运行PHP的web服务器上,我需要PHP脚本能够通过exec()、system()或类似方式运行一个特定的外部程序。 因此,必须在PHP级别启用执行函数 然而,为了减轻恶意PHP代码的影响,我想将PHP的执行限制为只需要的程序 换句话说,我不希望PHP能够运行文件系统中的任何(危险的)程序,比如/bin/ls、/usr/bin/wget等等 编辑:信任或不信任用户输入都不是问题。我知道我的PHP脚本运行的是合法的程序。我担心恶意PHP脚本通过shell exec运行所有内容的能力 PHP似乎不

在运行PHP的web服务器上,我需要PHP脚本能够通过
exec()
system()
或类似方式运行一个特定的外部程序。 因此,必须在PHP级别启用执行函数

然而,为了减轻恶意PHP代码的影响,我想将PHP的执行限制为只需要的程序

换句话说,我不希望PHP能够运行文件系统中的任何(危险的)程序,比如/bin/ls、/usr/bin/wget等等

编辑:信任或不信任用户输入都不是问题。我知道我的PHP脚本运行的是合法的程序。我担心恶意PHP脚本通过shell exec运行所有内容的能力


PHP似乎不允许指定可以执行的文件名,但是否有任何解决方法来限制执行?可能是编写一个定制的PHP扩展?

或者是一个
if
语句,用于检查
GET
POST
变量是否存在,如果存在,请运行指定的命令。永远不要允许任何用户输入放在
exec
中。谢谢Oliver,但这不是信任用户输入的问题。我知道我的PHP脚本运行的是合法的程序。我担心恶意PHP脚本通过shell exec运行所有内容的能力。我已经相应地编辑了这个问题。我不喜欢nix*权限,但我可以想象它们可以被配置成php只能运行一个程序。可以是一个dupe:或者是一个
if
语句,检查
GET
POST
变量是否存在,如果存在,请运行您指定的命令。永远不要允许任何用户输入放在
exec
中。谢谢Oliver,但这不是信任用户输入的问题。我知道我的PHP脚本运行的是合法的程序。我担心恶意PHP脚本通过shell exec运行所有内容的能力。我已经对问题进行了相应的编辑。我对nix*权限很差劲,但我可以想象,它们可以配置为php只能运行一个程序,这可能是一个重复: