是否可以 [如何?] 将 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
检查所有内容
我需要允许以下内容:
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
检查所有内容