我需要允许以下内容:
shell_exec('whois ' . $domain);
但我需要禁止其他所有内容,例如:
shell_exec('ls');
shell_exec('rm -rf /');
shell_exec('sudo service nginx restart');
是否可以仅将一个shell_exec
命令“白名单”?
答案 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