阻止网站被恶意反向代理降权的方法
恶意反向代理的危害以及如何阻止网站被方向代理
首先肯定会占用服务器资源,网站打开速度受影响。
其次,别人通过代理盗用你的网站数据,对用户与不是那么智能的搜索引擎而言,相当于建了一个与你一模一样的站点,那么很有可能你的站点会进搜索引擎沙箱,甚至被降权。
如果被恶意代理的页面,还挂有你的联盟广告(比如Adsense),这就十分危险了,如果有人点击了上面的广告,很容易被Adsense封号。
还有很多危害,读者可以自行脑补……
js 级别的解决方案
<script type="text/javascript">
if (document.domain != 'daimagongfang.com' && document.domain != 'www.daimagongfang.com'){
window.location.href='http://www.daimagongfang.com/';
}
</script>
脚本很简单,如果地址栏中的网址不是 daimagongfang.com 和 www.daimagongfang.com 中的任何一个,那么就把地址栏转向 http://www.daimagongfang.com/ 。这段代码同样可以避免被人使用反向代理技术“伪造”一个跟自己一模一样的网站。
题外话:如何防止网站被iframe嵌入。有些人用iframe做了个框架,把我们网站嵌入其中,访客来浏览的时候,好像是在浏览他自己的网站一样,那么如何解决呢?以下方法可破:
<script type="text/javascript">
<!--
if (top.location != self.location)top.location=self.location;
// -->
</script>
php 级别的解决方案
js 级别的解决方案虽然能够让恶意代理页面跳回来,但是对搜索引擎不怎么友好。下面是服务器端(PHP)的解决方案,代码比较简单,就不多说了。
$proxy_rs = $this -> proxy_filter();
if( $proxy_rs != 'daimagongfang.com' || $proxy_rs != 'www.daimagongfang.com' )
{
echo '非法反向代理访问';
//header('Location: http://www.daimagongfang.com/');
exit;
}
public function proxy_filter()
{
/*
$svrUrl = 'http://' . $_SERVER['SERVER_NAME'].$_SERVER["PHP_SELF"];
if (!empty($_SERVER["QUERY_STRING"]))
{
$svrUrl .= "?".$_SERVER["QUERY_STRING"];
}
return $svrUrl;
*/
return $_SERVER['SERVER_NAME'];
}
htaccess 级别的解决方案
.htaccess
RewriteEngine On
RewriteBase /
php_value auto_append_file proxy.php
proxy.php
<?php
$f = getenv("HTTP_X_FORWARDED_FOR");
$server = getenv("HTTP_HOST");
if (($f!="")&&($server!="daimagongfang.com")&&($server!="daimagongfang.com")){
echo '本服务器禁止恶意反向代理!';
}
?>