如何阻止网站被恶意反向代理访问(防止网站镜像)

百度最近更新算法之后,很多朋友发现自己网站被镜像或者被利用了小偷程序。百度官方也说了,现在镜像站比之前更容易做了,这导致了镜像站的层出不穷,如何做到利用代码防止镜像站呢? 什么是反向代理? 先说说正向代理的概念: 正向代理,也就是传说中的代理
百度最近更新算法之后,很多朋友发现自己网站被镜像或者被利用了小偷程序。百度官方也说了,现在镜像站比之前更容易做了,这导致了镜像站的层出不穷,如何做到利用代码防止镜像站呢?

什么是反向代理? 

先说说正向代理的概念: 

正向代理,也就是传说中的代理,他的工作原理就像一个跳板。简单的说,我是一个用户,我访问不了某网站,但是我能访问一个代理服务器。这个代理服务器呢,他能访问那个我不能访问的网站,于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容,代理服务器去取回来,然后返回给我。从网站的角度,只在代理服务器来取内容的时候有一次记录,有时候并不知道是用户的请求,也隐藏了用户的资料,这取决于代理告不告诉网站。 

结论就是,正向代理是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。 

那么反向代理的概念呢? 

比如用户访问 http://www.genban.org/librarys/veda 这个页面,但www.genban.org实际上并不存在这个页面,他是偷偷从另外一台服务器上取回来,然后作为自己的内容吐给用户。 

但用户并不知情,这很正常,用户一般都很笨。这里所提到的www.genban.org这个域名对应的服务器就设置了反向代理功能。 

结论就是反向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理 的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容原本就是它自己的一样。 

恶意反向代理的危害 

网站被恶意反向代理有什么危害呢?这里列举一下: 

•首先肯定会占用服务器资源,网站打开速度受影响。 
•其次,别人通过代理盗用你的网站数据,对用户与不是那么智能的搜索引擎而言,相当于建了一个与你一模一样的站点,那么很有可能你的站点会进搜索引擎沙箱,甚至被降权。 
•如果被恶意代理的页面,还挂有你的联盟广告(比如Adsense),这就十分危险了,如果有人点击了上面的广告,很容易被Adsense封号。 
•还有很多危害,读者可以自行脑补……

js 级别的解决方案

<script type="text/javascript">
if (document.domain != 'nowamagic.net' && document.domain != 'www.genban.org'){
 window.location.href='http://www.genban.org/';
}
</script>

脚本很简单,如果地址栏中的网址不是genban.org和 www.genban.org 中的任何一个,那么就把地址栏转向 http://www.genban.org/ 。这段代码同样可以避免被人使用反向代理技术“伪造”一个跟自己一模一样的网站。

题外话:如何防止网站被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 != 'nowamagic.net' || $proxy_rs != 'www.genban.org' ) 
{
 echo '非法反向代理访问';
 //header('Location: http://www.genban.org/');
 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!="nowamagic.net")&&($server!="www.genban.org")){
 echo '本服务器禁止恶意反向代理!';
}
?>
 

这个由于我网站的特殊性,没试验过,但是网上常用这种方法。

Apache httpd.conf 级别的解决方案
这个 Apache 上如何禁止我还没捣鼓出来, Nginx 倒可以

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

一、微信支付接口概念: 微信支付是由腾讯社交软件微信和财付通联合推出的移动支付产品,而微信支付接口则是为微信电商提供的手机支付服务功能接口,商户一旦申请此接口,客户就可以通过微信支付进行在线购物付款。其安全系统全部有具有第三方支付牌照的财付
前段时间跟版网的技术对网站全面部署了https,部署后发现网站原有的百度社会化分享组件不显示了。那么怎么让分享功能重新显示了?刚开始我以为把百度的链接直接改为https就能可以,事实上是不行的。百度说的是率先对全网实现了https化,但是自己的产品都不能
用织梦模板Dedecms做企业网站的后台管理系统时,经常会遇到要做客户调查表或客户留言的提交表格,有些人会去找插件或自己不懂数据库的会花钱找人写代码,其实很简单,织梦自身就带有这个功能,只是你还没有真正深入了解dedecms内涵所在。 接下来简单介绍一下
织梦模板DEDECMS本身并没有视频模块,需要自己加,比较麻烦,现在如优酷这些视频网站调用视频又有很长的广告,去优酷视频广告的方法很多也已经失效不能用,现在就和大家介绍一下用HTML5轻松解决网站加视频的问题。 1.由于现在很多的网站都还不是用HTML5写的
网站想要换域名,该怎么做?一直是站长咨询较多的问题,学院特意邀请刚刚完成网站换域名的版主三木,给大家分享下如何换域名: 这里说的网站改版,并不包含单纯的页面样式的改动,仅指原页面 URL 发生了改变,比如换域名、修改 URL 结构等。 对于百度来讲,
百度地图标注是作为目前国内使用率最高的网络产品,但是很多商家没有利用好百度地图标注,很多随着百度与普通网民的使用粘度不断增强而日渐成为出行路线规划、寻找目的地、搜索旅游、餐饮、消费兴趣点的必备工具之一。 百度地图标注 百度地图标注而对各行业