我使用GET方法用于导航在我的网站之一。问题是,有些脏爱因斯坦创建调用另一个域的链接:
http://www.mywebsite.com?products=http://www.dirtyeinstein.com?fishform.inc
有,我可以用它来阻止这种虐待的脚本。
谢谢。
我使用GET方法用于导航在我的网站之一。问题是,有些脏爱因斯坦创建调用另一个域的链接:
http://www.mywebsite.com?products=http://www.dirtyeinstein.com?fishform.inc
有,我可以用它来阻止这种虐待的脚本。
谢谢。
只需在您的脚本检查所请求的页面存在,
// allowed get parameters for product
$whiteList = array(
'tvs',
'toys',
);
$menu = $_GET['products'];
if (! in_array($menu, $whiteList) {
// forward to inde
} else {
// forward to requested page
}
您正在使用导航喜欢什么样的?
http://www.mywebsite.com?products=book.php
如果不重定向任何人的,我的意思是,如果你不使用类似
http://www.mywebsite.com?products=http://www.myanotherdomain.com
然后,只需检查字符串是否以“http”
开始可帮助:http://nl2.php.net/manual/en/function.substr.php
例如:
$str = $_GET['products'];
if (strlen($str) > 4 && if (substr($str, 0, 4) == "http")
{
echo "You dirty Einstein!! Get out!";
return;
}
你还需要检查它是否以ftp,rss,ssl或任何其他协议开头,所以这不是一个真正的解决方案 – 2009-12-04 12:05:08
@adam:我提供了一个示例。只是一个例子... – JCasso 2009-12-04 12:09:15
这是错误的解决方案,唯一安全的方法是检查白名单,而不是根据规则排除。 – 2009-12-04 12:14:26
你在做什么GET变量?把它放到'file_get_contents'或'include' /'require',或重定向? – 2009-12-04 12:17:29