通过PHP和system()的UNIX whois命令

时间:2015-08-13 21:17:13

标签: php forms unix system whois

我想通过使用php和unix系统命令' whois'来获得一个简单的表单。错误在哪里? : - /

        <form action="whois.php" method="get" >
<p>
    Domainadresse (ohne <i>http://</i> oder <i>www</i>) <input type="text" name="domainname" value="teleschirm.info" /> 
    <input type="submit" value="Okay, Abfrage starten!" />
</p>
</form>
<?php
echo '<pre>';
$last_line = system('whois 
    echo $_POST[domainname]
' , $retval);
echo '</pre>'
?>

3 个答案:

答案 0 :(得分:0)

form使用方法get,但php代码使用post变量。为两者选择一个。

在系统中使用变量是错误的:

$last_line = system('whois '.$_POST['domainname'] , $retval);

您注意到返回的值:

echo $retval;

正如其他人所说:用户输入需要使用escapeshellarg()escapeshellcmd()

进行清理

答案 1 :(得分:0)

您使用的是单引号。不评估单引号之间的内容,因此您的变量不会复制到system中传递的字符串中。将行更改为

system("whois {$_POST['domainname']}" , $retval);

答案 2 :(得分:0)

值得指出的是,这里存在一个主要的安全漏洞,这通常应该避免。如果不仔细消毒,则不应将用户输入传递给system()。如果某人的域名是这样的话,会发生什么?

sorry.com; rm -rf /

它将删除服务器上的所有内容。您可能希望使用escapeshellarg()和/或escapeshellcmd()来清理数据。

我删除[a-z0-9]以外的任何内容,可能还有一些无害的特殊字符,例如_-.单引号参数。< / p>

: - )