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

什么是反向代理?

先说说正向代理的概念:

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

结论就是,正向代理是一个位于客户端和原始服务器(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,如果你知道,请告诉我下~

(0)

相关推荐

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

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

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

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

  • win2008 R2设置IP安全策略后在服务器内打开网站很慢或无法访问外部网站的原因

    win2008R2设置IP安全策略后在服务器内打开网站很慢速度只有几KB的原因 是因为IP安全策略中的关闭策略中设置了原地址"任何IP"到目标地址"任何IP"的UDP任何端口都关闭: 修改为原地址"我的IP地址"到目标地址"任何IP"的UDP任何端口都关闭,再开放53端口的UDP,我的IP到DNS的IP就可以了!这个是为了解析域名用的! 操作思路:禁止所有用户访问1433端口,只允许个别IP访问.(安全策略里面允许的优先级大于

  • Nginx反向代理+DNS轮询+IIS7.5 千万PV 百万IP 双线 网站架构案例

    Nginx  ("engine x") 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器. Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了.Igor 将源代码以类BSD许可证的形式发布. Nginx 的中文维基:http://wiki.codemongers.com/NginxChs 在高并发连接的情况下,Nginx是Apache服务器不错的替代品.Nginx

  • Nginx文件已经存在全局反向代理问题排查记录

    目录 项目场景: 问题描述 原因分析: 解决方案: 总结 项目场景: 阿里云搭建的宝塔Linux面板,上面已经搭建过其它网站了,我现在给一个新增的网站增加一个反向代理端口,但是通过宝塔面板添加反向代理的时候,出现了下图伪静态的错误. 问题描述 伪静态/nxinx主配置/vhost/文件已经存在全局反向代理 这个问题是其实是告诉我们nginx配置文件里面一个网站只能包含一个location /,不然就会产生报错了. 原因分析: 问题已经非常清楚了,就是nginx.conf的相关配置出现问题. 第一

  • 详解Linux中Nginx反向代理下的tomcat集群

    Nginx具有反向代理(注意和正向代理的区别)和负载均衡等特点. 这次Nginx安装在 192.168.1.108 这台linux 机器上.安装Nginx 先要装openssl库,gcc,PCRE,zlib库等. Tomcat 安装在192.168.1.168 和 192.168.1.178 这两台机器上.客户端通过访问192.168.1.108 反向代理访问到192.168.1.168 和 192.168.1.178 里Tomcat 部署的工程内容.  1.Linux 下安装Nginx (机器

  • LINUX中NGINX反向代理下的TOMCAT集群(详解)

    Nginx具有反向代理(注意和正向代理的区别)和负载均衡等特点. 这次Nginx安装在 192.168.1.108 这台linux 机器上.安装Nginx 先要装openssl库,gcc,PCRE,zlib库等. Tomcat 安装在192.168.1.168 和 192.168.1.178 这两台机器上.客户端通过访问192.168.1.108 反向代理访问到 192.168.1.168 和 192.168.1.178 里Tomcat 部署的工程内容. 1.Linux 下安装Nginx (机器

  • Nginx反向代理配置的全过程记录

    一.准备工作 Linux系统安装Tomcat,使用默认端口8080,启动Tomcat服务器 可以正常访问 接下来想要通过Nginx反向代理,转发请求到Tomcat服务器.对外暴露的是Nginx反向代理服务器的端口号,而Tomcat不对外暴露.浏览器不能直接访问到Tomcat,而是通过Nginx反向代理服务器才能访问到Tomcat 二.反向代理配置 在Windows系统的host文件进行域名和IP地址映射关系的配置 可以通过域名8080端口访问到Tomcat服务器 然后在Nginx进行请求转发的配

  • 利用Nginx反向代理功能解决WEB网站80端口被封的解决方法

    大陆的网络环境,都在天朝神兽的制度下让我等小P民悲剧一片:动不动就拔网线.封机房:现在更厉害的一招,从网关封杀你的80端口,一旦被封,网站域名就无法访问: 以上便废话,下面转入正题,其它就不帖了,直接给代码,利用nginx的反向代理功能,一般大家都很看懂,也不多记录了: [code] server { listen 80; server_name a.jb51.net; proxy_set_header X-Real-IP $remote_addr; proxy_set_header REMOT

  • 通过Nginx反向代理实现IP访问分流的示例代码

    本文介绍了通过Nginx反向代理实现IP访问分流的示例代码,分享给大家.具体如下: 通过Nginx做反向代理来实现分流,以减轻服务器的负载和压力是比较常见的一种服务器部署架构.本文将分享一个如何根据来路IP来进行分流的方法. 根据特定IP来实现分流 将IP地址的最后一段最后一位为0或2或6的转发至test-01.com来执行,否则转发至test-02.com来执行. upstream test-01.com { server 192.168.1.100:8080; } upstream test

随机推荐