如何阻止网站被恶意反向代理访问

 最近有人用小站数据,利用反向代理技术,做了个小偷站。用户访问的是他的网址,但实质上内容数据确是我的,这是一起恶意反向代理事件

什么是反向代理? 
 
先说说正向代理的概念: 
 
正向代理,也就是传说中的代理,他的工作原理就像一个跳板。简单的说,我是一个用户,我访问不了某网站,但是我能访问一个代理服务器。这个代理服务器呢,他能访问那个我不能访问的网站,于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容,代理服务器去取回来,然后返回给我。从网站的角度,只在代理服务器来取内容的时候有一次记录,有时候并不知道是用户的请求,也隐藏了用户的资料,这取决于代理告不告诉网站。 
 
结论就是,正向代理是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。 
 
那么反向代理的概念呢? 
 
比如用户访问 http://www.nowamagic.net/librarys/veda 这个页面,但www.nowamagic.net实际上并不存在这个页面,他是偷偷从另外一台服务器上取回来,然后作为自己的内容吐给用户。 
 
但用户并不知情,这很正常,用户一般都很笨。这里所提到的 www.nowamagic.net 这个域名对应的服务器就设置了反向代理功能。 
 
结论就是反向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理 的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容原本就是它自己的一样。 
 
恶意反向代理的危害 
 
网站被恶意反向代理有什么危害呢?这里列举一下: 
 
•首先肯定会占用服务器资源,网站打开速度受影响。 
•其次,别人通过代理盗用你的网站数据,对用户与不是那么智能的搜索引擎而言,相当于建了一个与你一模一样的站点,那么很有可能你的站点会进搜索引擎沙箱,甚至被降权。 
•如果被恶意代理的页面,还挂有你的联盟广告(比如Adsense),这就十分危险了,如果有人点击了上面的广告,很容易被Adsense封号。 
•还有很多危害,读者可以自行脑补……
 
 
js 级别的解决方案
代码如下:
<script type="text/javascript">
if (document.domain != 'nowamagic.net' && document.domain != 'www.nowamagic.net'){
 window.location.href='http://www.nowamagic.net/';
}
</script>
 
 
脚本很简单,如果地址栏中的网址不是 nowamagic.net 和 www.nowamagic.net 中的任何一个,那么就把地址栏转向 http://www.nowamagic.net/ 。这段代码同样可以避免被人使用反向代理技术“伪造”一个跟自己一模一样的网站。
 
题外话:如何防止网站被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.nowamagic.net' ) 
{
 echo '非法反向代理访问';
 //header('Location: http://www.nowamagic.net/');
 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.nowamagic.net")){
 echo '本服务器禁止恶意反向代理!';
}
?>
 
 
这个由于我网站的特殊性,没试验过,但是网上常用这种方法。
 
Apache httpd.conf 级别的解决方案
这个 Apache 上如何禁止我还没捣鼓出来, Nginx 倒可以,但是我用的是 Apache,如果你知道,请告诉我下~
 

时间: 2024-12-22 08:51:17

如何阻止网站被恶意反向代理访问的相关文章

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

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

Windows安装nginx1.10.1反向代理访问IIS网站_nginx

首先去官网下载软件包,解压,路径最好不要有中文 Nginx配置的路径问题 由于在Windows下文件路径可以用"\", 也可以用"\\", 也可以用"/"作为路径做分隔符.但"\"最容易引发问题,所以要尽量避免使用. 不要添加PATH,否则会引发错误,config文件路径找不到 比如我解压在E盘 cmd命令定位到nginx.exe所在文件夹cd E:\WorkSoftWare\nginx-1.10.1 然后执行,首先保证ngi

Windows安装nginx-1.10.1反向代理访问IIS网站

首先去官网下载软件包,解压,路径最好不要有中文 Nginx配置的路径问题 由于在Windows下文件路径可以用"\", 也可以用"\\", 也可以用"/"作为路径做分隔符.但"\"最容易引发问题,所以要尽量避免使用. 不要添加PATH,否则会引发错误,config文件路径找不到 比如我解压在E盘 cmd命令定位到nginx.exe所在文件夹cd E:\WorkSoftWare\nginx-1.10.1 然后执行,首先保证ngi

Nginx中的用户认证配置及阻止用户使用代理访问的方法_nginx

nginx用户认证配置( Basic HTTP authentication)ngx_http_auth_basic_module模块实现让访问着,只有输入正确的用户密码才允许访问web内容.web上的一些内容不想被其他人知道,但是又想让部分人看到.nginx的http auth模块以及Apache http auth都是很好的解决方案. 默认情况下nginx已经安装了ngx_http_auth_basic_module模块,如果不需要这个模块,可以加上 --without-http_auth_

Nginx如何反向代理网站和设置虚拟主机

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dgd2010.blog.51cto.com/1539422/1394103 反向代理的应用举例: 反向代理服务器对于用户而言,用户并不清楚自己的访问的服务器(网站)是否是真的要访问的网站还是代理的网站,只有反向代理出错或者用户熟悉该网站的一些标签性质的信息时用户才可能意识到自己实际是在访问一个代理服务器.     反向代理服务器往往用于提高内网服务器的安全性,但不局限于此.通过

nginx反向代理配置与优化之nginx优化

环境为:Windows2003 + nginx.(根据官方文档建议,使用1.5.10版本,即当前最新版). 一.简单的配置,让nginx先跑起来 nginx配置比较简单.conf目录下找到nginx.conf文件,修改如下配置  代码如下 复制代码 server {         listen       80; //绑定的监听端口         server_name  www.111cn.net 111cn.net; //绑定的域名           #charset koi8-r;

Linux VPS上配置Nginx反向代理的方法

  反向代理是什么? 反向代理指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部(或其他)网络上的服务器,并将从服务器上得到的结果返回给Internet上请求连接的客户端. 实现方法: 比如我想在VPS上建一个t.jb51.net的域名用来反向代理访问twitter,首先在域名注册商那里的域名管理上为域名t.vpser.net添加A记录到VPS的IP上,再在VPS上修改Nginx的配置文件,添加如下: 代码如下: server { listen 80; server_name

字段-Apache 如何对反向代理的请求及返回头做修改

问题描述 Apache 如何对反向代理的请求及返回头做修改 想通过Apache服务器的配置统计一下应用服务器处理请求的时间,知道Apache可以修改请求及响应头,如: Header set MyHeader "%D %t",其中%D就是请求的处理时间,然后我试验了一下,在apache部署目录中加入一些测试文件,通过浏览器访问,可以看到apache确实对响应头进行了处理,但是通过反向代理访问的请求,apache却无法对其Header进行处理,为什么? 图1是访问apache 本身的资源的

Squid搭建反向代理提高网站访问速度

反向代理简述: 反向代理服务器有两种传输模式: 1.同步模式:(如:squid)用户发起请求,请求立即被转到后端的服务器,于是在浏览器和后端服务器之间就建立了一个连接,在请求完成前这个连接是一直存在的. 2.异步模式:(如:nginx)用户发起的请求会发送到nginx,nginx接收到所有的数据后在转发到后端的服务器,后端服务器处理完成后把数据返回给nginx,nginx在返回给用户. 由此可见如果用户发起的请求的数据比较大,或者用户端的网速比较慢,同步模式时后端服务器的连接数相对于异步模式会比