我有一个名为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
如何防止此滥用,只接受本地域名。
答案 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;
}