【发布时间】:2013-11-13 19:05:00
【问题描述】:
我必须允许一些子站点链接我的页面,但我不想让主站点这样做。
主站点是 www.mainsite.com,这个站点不能链接我的页面,但必须允许子站点 www.mainsite.com/subsite 链接这些页面,就像网络上的所有其他站点一样。 简单来说,我想阻止那些从我的网站上窃取我的内容的网站,而无需询问权限或滥用我的带宽的网站。我试图这样做,但代码不起作用,有人可以帮助我吗?
代码:
<?php
$ref=$_SERVER['HTTP_REFERER'];
if (strpos($ref,'http://randomsite/allowedsite1')===0 || strpos($ref,'http://randomsite/allowedsite2')===0){} //If the referer comes from an allowed site, it must show the HTML below
if (strpos($ref,'http://randomsite/')===0 || strpos($ref,'http://anotherblockedrandomsite/')===0){
header('location: http://mycoolsite/nohotlink.png'); //if the referer comes from an blocked site, it redirects to an troll png
exit();
}
?>
<html>
My Password
</html>
【问题讨论】:
-
一般而言,referer 并不是一个安全的东西。浏览器很容易伪造它。
-
您无法控制其他网站上的内容。他们可以链接到他们想要的任何网站——你无法控制它。你问的是这个吗?如果没有,请更新问题并说明清楚。
-
否则 if {} else {} 结构似乎更安全。如果被阻止的站点名称更改,则默认情况下将允许更改的名称。
-
HTTP_REFERER 并非由所有客户端发送,这不是访问控制的可行解决方案
标签: php redirect if-statement