通过网站安全地执行shell脚本

时间:2013-04-26 11:55:21

标签: php apache bash shell scripting

我正在尝试使用php exec运行shell脚本。

事情是 - 这不是很安全,因为我通过html文本框发布它,即

<?php
$output = shell_exec ('whois '.$_POST['domain']);
echo "<pre>$output</pre>";
?>

如果用户输入了| rm -rf *

,那就是......

它会删除文件夹中的所有内容。

是否有一种安全的方式来执行shell脚本并防止这种情况发生?

由于

2 个答案:

答案 0 :(得分:1)

总有一个函数可以转义传递给另一个系统的用户数据。对于shell命令,有escapeshellarg。无论你对用户输入进行何种其他类型的验证,在将参数传递给shell函数之前转义参数总是一个好主意。

例如:

$domain_arg = escapeshellarg( $_POST['domain'] );
$output = shell_exec( 'whois ' . $domain_arg );

答案 1 :(得分:0)

你想做一个whois。所以你需要验证它是否只包含你想要的部分。在你的情况下,域名,没有别的。

if (preg_match('/^(?:[-A-Za-z0-9]+\.)+[A-Za-z]{2,6}$/', $_POST['domain']))
{
    $output = shell_exec('whois ' . $_POST['domain']);
    echo "<pre>$output</pre>";
}
else
{
    echo "stop trying to make my server annoyed";
}