是否可以 [如何?] 将 shell_exec() 命令列入黑名单和白名单?

Is it possible [how?] to blacklist & whitelist shell_exec() commands?

我需要允许以下内容:

shell_exec('whois ' . $domain);

但我需要禁止其他一切,例如:

shell_exec('ls');
shell_exec('rm -rf /');
shell_exec('sudo service nginx restart');

是否可以 "whitelist" 只有一个 shell_exec 命令?

如果它是关于某些脚本的——只是不要将用户输入传递给 shell_exec 参数,当某些参数匹配某些值时调用它

if ($_GET['cmd'] === 'whois') {
    shell_exec('whois whatever');
}

如果是关于某种托管,那么您应该使用 OS 权限来限制对数据的访问。因此用户将能够调用 shell_exec('rm -rf /') 但什么也不会发生。

也许这不是您问题的真正答案,但是:

你可以用php查看:

if(substr( $command , 0, 5 ) === "whois"){
  shell_exec($command );
}

但我仍然不认为将用户输入放入 shell_exec 是明智的,但如果你真的想要它,我应该先用 php

检查所有内容