PHP GET URL本地域

时间:2014-08-02 04:43:53

标签: php redirect

我有一个名为get.php的重定向页面,其中包含以下代码:

  header('Location: '.urldecode($_GET['url']));
  $url = (isset($_GET[url]) && !empty($_GET[url])) ? $_GET[url] : NULL;
  if(empty($url)){
  header('Location: http://www.example.com/404');
}

此链接用于参考跟踪。当我检查日志时,我发现有人滥用它而指向非恶意软件网站,即。

http://www.example.com/get.php?s&url=http://i-am-malware.yes

如何防止此滥用,只接受本地域名。

1 个答案:

答案 0 :(得分:1)

尝试这个

$url = "";
if(isset($_GET['url']))
{
    $url = urldecode($_GET['url']);

}

if($url=="")
{
    header('Location: http://www.example.com/404');
    exit;
}
else
{
    $arr = parse_url($url);
    if($arr['host']==$_SERVER['SERVER_NAME'])
    {
        header("Location:".$url);
    }
    else
    {
        header('Location: http://www.example.com/404');
    }
    exit;   
}