我正在尝试使用php exec运行shell脚本。
事情是 - 这不是很安全,因为我通过html文本框发布它,即
<?php
$output = shell_exec ('whois '.$_POST['domain']);
echo "<pre>$output</pre>";
?>
如果用户输入了| rm -rf *
它会删除文件夹中的所有内容。
是否有一种安全的方式来执行shell脚本并防止这种情况发生?
由于
答案 0 :(得分:1)
总有一个函数可以转义传递给另一个系统的用户数据。对于shell命令,有escapeshellarg。无论你对用户输入进行何种其他类型的验证,在将参数传递给shell函数之前转义参数总是一个好主意。
例如:
$domain_arg = escapeshellarg( $_POST['domain'] );
$output = shell_exec( 'whois ' . $domain_arg );
答案 1 :(得分:0)
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";
}