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



我需要允许以下内容:

shell_exec('whois ' . $domain);

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

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

是否可以只将一个shell_exec命令列入"白名单"?

如果它是关于某个脚本的——只是不将用户输入传递到shell_exec参数中,请在某个参数与某个值匹配时调用它

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

如果这是一种托管,那么您应该使用操作系统权限限制对数据的访问。所以用户可以调用shell_exec('rm -rf /'),但不会发生任何事情。

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

您可以使用php:进行检查

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

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

检查所有内容

最新更新