是否有可能[如何?]黑名单& whitelist shell_exec()命令?

时间:2015-11-27 14:09:41

标签: php shell-exec

我需要允许以下内容:

shell_exec('whois ' . $domain);

但我需要禁止其他所有内容,例如:

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

是否可以仅将一个shell_exec命令“白名单”?

2 个答案:

答案 0 :(得分:2)

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

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

如果是托管类型,则应使用操作系统权限限制对数据的访问。因此,用户可以拨打shell_exec('rm -rf /'),但不会发生任何事情。

答案 1 :(得分:1)

也许它不是你问题的答案,但是:

你可以用php检查:

Shader "MaskedTexture"
{
   Properties
   {
      _MainTex ("Base (RGB)", 2D) = "white" {}
      _Mask ("Culling Mask", 2D) = "white" {}
      _Cutoff ("Alpha cutoff", Range (0,1)) = 0.1
   }
  SubShader
  {
      Tags {"Queue"="Transparent"}
      Lighting Off
      ZWrite Off
      Blend SrcAlpha OneMinusSrcAlpha
      AlphaTest GEqual [_Cutoff]
  Pass
  {
     SetTexture [_Mask] {combine texture}
     SetTexture [_MainTex] {combine texture, previous}
  }
  }
}

但我仍然不认为聪明地将用户输入放在shell_exec中但是如果你真的想要它我应该先用php检查everthing