安全执行shell脚本;在执行之前逃避变种

时间:2010-04-12 19:03:43

标签: php security shell

让我们假设我们有一个简单的PHP脚本,应该从$ _GET数组中获取ssh_hostssh_usernamessh_port并尝试使用此参数连接到SSH。

$port      = escapeshellcmd($_GET['ssh_port']);
$host      = escapeshellcmd($_GET['ssh_host']);
$username  = escapeshellcmd($_GET['ssh_username']);

$answer = shell_exec("ssh -p " . $port . " " . $user . "@" . $host);

escapeshellcmd()是否足够或者我需要更棘手的东西? 或者也许我应该在这个例子中使用escapeshellarg()

谢谢。

1 个答案:

答案 0 :(得分:2)

我想说这是为escapeshellarg函数创建的 - 所以,为了转义参数,那就是你应该使用的那个。

基本上:


引用各自的文件:

escapeshellcmd():
在将此数据传递给exec()system()函数或反引号运算符之前,应使用此函数确保来自用户输入的任何数据都被转义。

escapeshellarg():
此函数应用于将单个参数转义为来自用户输入的shell函数。