如何清理我网站上的URL / IP地址字段的输入?

时间:2014-07-18 13:03:38

标签: php validation

我是新手的某个人。我不确定在这个领域阻止xss或注射的最佳方法是什么。

我的网站上有一个字段,它会使用用户提交的IP地址或URL来完成ping / traceroute测试。我真的只想允许HAS被允许用于该功能。我现在整个工作都在工作,但我不确定如何消毒输入。

基本上,这是我的ping功能。我不太了解输出缓冲,但它似乎是从命令中捕获输出的最简单方法。

function ping($domain){
   echo "</div>";
   $command = shell_exec("ping -c 3 $domain");
   ob_start();
   echo "<pre>$command</pre>";
   $output = ob_get_clean();
   echo "\n" . $output;
}

2 个答案:

答案 0 :(得分:2)

您可以使用PHP的内置过滤filter_var()

if($domain === filter_var($domain, FILTER_VALIDATE_URL) || $domain === filter_var($domain, FILTER_VALIDATE_IP)
{
    // run your existing code
}
else
{
    // invalid input
}

答案 1 :(得分:0)

我确信以下内容应该可以正常运作:

if(!preg_match('/^[a-z0-9]+\.[a-z0-9]+$/i', $domain) &&
    !preg_match('/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/i', $domain))
    die('Not a valid domain!');

此处示例:http://phpfiddle.io/fiddle/843401527