合肥律师论坛,法律咨询,合肥律师事务所,安徽律师第一社区网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 277|回复: 2

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

[复制链接]
发表于 2017-3-4 20:32:14 | 显示全部楼层 |阅读模式
1.jpg
很多时候,我们看到两个除了域名不同,其他完全相同的网站,如果你是一个站长,忽然看到一个和自己网站完全一样的网站,一定会有点恐慌吧。这种情况,我们称之为镜像网站。来看看百科上关于镜像网站的描述:

网站镜像,通过复制整个网站或部分网页内容并分配以不同域名和服务器,以此欺骗搜索引擎对同一站点或同一页面进行多次索引的行为,这既是为什么有的网站注明禁止未授权不得做网站镜像的原因了,两个网站的完全一样,相似度过高必然会导致自己的网站受到影响。

发生恶意网站的危害对于新站来说,是比较大的。那我们应该怎么防止别人恶意镜像我们的网站呢?首先得了解一下镜像网站的原理:

镜像网站大概需要以下的几个条件,一是你的网站使用了独立IP。当然,独立ip对一个网站来说,是好的,可以和其他网站区分开来,成为镜像网站的条件之一,只是独立ip的一个小缺点;二是网站程序位于网站空间根目录。这个不是那么好避免的,如果你的空间支持绑定二级目录的话,还是可以解决的;三是你的网站是新建的网站内容有价值网站。

网站内容有价值是别人镜像你网站的初衷,当然,也许镜像你网站的是为了好玩或者恐吓你或者是吃饱了撑的。镜像网站选择新建站的原因,一方面是新建的网站搜索引擎没有权重,容易发生乌龙事件;另一方面新建站的站长技术、见识还不够,恶意镜像者认为有机可乘。

了解了镜像网站的原理之后,我们来谈谈如何自己的网站被恶意镜像。一是更换ip或者空间,这个方法不是很可取,因为你换个ip,别人也很容易找到;二是改变网站程序的位置,由根目录换到一级目录。这个方法只对那种支持二级目录绑定的空间有用;三是禁止直接ip访问,这个可以联系主机商解决;四是在网页的head区域加入base标签,对网站的首选域名进行定义;五是网站程序使用绝对地址,这样即便别人镜像了你的网站,打开新页面还是会跳转到你的网站的;五是向搜索引擎反映。谷歌站长工具中有自定义首选域名的选项,百度也可以提交人工投诉;六是禁止对方的ip访问你的网站,这个方法的作用有限。

恶意反向代理的危害以及如何阻止网站被方向代理
首先肯定会占用服务器资源,网站打开速度受影响。
其次,别人通过代理盗用你的网站数据,对用户与不是那么智能的搜索引擎而言,相当于建了一个与你一模一样的站点,那么很有可能你的站点会进搜索引擎沙箱,甚至被降权。

js 级别的解决方案
<script type=”text/javascript”>
if (document.domain != ‘055110.com’ && document.domain != ‘www.055110.com’){
    window.location.href=’http://www.055110.com/’;
}
</script>
脚本很简单,如果地址栏中的网址不是 055110.com 和 www.055110.com 中的任何一个,那么就把地址栏转向 http://www.055110.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 != ‘055110.com’ || $proxy_rs != ‘www.055110.com’ )
{
    echo ‘非法反向代理访问’;
    //header(‘Location: http://www.055110.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!=”055110.com”)&&($server!=”www.055110.com”)){
    echo ‘本服务器禁止恶意反向代理!’;
}
?>
这个是网上常用这种方法
回复

使用道具 举报

 楼主| 发表于 2017-3-10 19:21:03 | 显示全部楼层
前几天两个站点被别人完全境像代理,基本上就是直接让他给复制过去了,我也是醉了,直接镜像过去,然后再缓存到他自己的服务器上面,真是绝了,你自己的站点再加什么代理去反代理也不管用了,因为他的站点根本就不变,使用了 .htaccess 来反代理,也使用了 js 判断域名都不管用,所以我一直在判断他使用了缓存机制,如果不使用缓存,时时代理的话肯定是可以的,夏日博客先把这两种方法来总结一下吧。
一、使用 .htaccess 禁止反向代理
在站点根目录下新建 .htaccess 文件,然后添加如下的内容:
RewriteEngine On
RewriteBase /
php_value auto_append_file proxy.php
再新建 proxy.php 文件,添加如下代码保存.
<?php  
$f = getenv("HTTP_X_FORWARDED_FOR");  
$url = "https://www.055110.com";  
if ($f!=""){  
print "“;  
print ““;  
}  
?>  
二、使用 js 代码判断域名
<script type="text/javascript">  
if (document.domain != '055110.com' && document.domain != 'www.055110.com'){  
window.location.href='http://www.055110.com/';  
}  
</script>  
这种是首先判断他的域名是不是 055110.com 这个域名,如果是则正常访问,如果不是则跳转到原网站。
三、使用 php 判断域名
这种方法跟使用 js 代码来跳转域名是一个道理,都是先判断域名,如果是代理的域名则进行跳转,代码如下:
<P><?php </P>  
<P>if($_SERVER['SERVER_NAME'] != '055110.com' ||$_SERVER['SERVER_NAME'] != 'www.055110.com' )   
{  
exit('非法反向代理访问');  
}</P>  
<P>?></P>  
如果是时时代理的话,上面三种方法就已经足够了,但如果他使用了缓存,将代理的网站缓存到他自己的服务器上面,再使用这些就不管用了,因他被他代理的站都不更新了,你再怎么改都不行,尤其现在的阿里云CDN,360CDN又怎么牛,而我的站点使用的就是阿里云CDN,上面有个防止外链,把防外链给开启才解决。
一般的网站CSS,JS调用基本上用的都是绝对路径,所以我们可以重命名CSS,JS的文件包以达到对别人境像网站的控制,把他的页面搞乱,这样相信坚持不了几天,他就会换成其它网站了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-10 19:38:37 | 显示全部楼层
1.jpg
1、js的代码 修改完 最好加密一下
<script type="text/javascript">
if (document.domain != '055110.com' && document.domain != 'www.055110.com'){
window.location.href='http://www.055110.com/';
}
</script>




2、PHP代码

<P><?php </P>
<P>if($_SERVER['SERVER_NAME'] != '055110.com' ||$_SERVER['SERVER_NAME'] != 'www.055110.com' ) 
{
exit('非法反向代理访问');
}</P>
<P>?></P>


先将代码中的055110.com 和 www.055110.com 换成你的域名
然后JS代码写到模板文件里,footer 或者 header
PHP代码的话 直接写到根目录forum.php 上就可以了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|合肥律师论坛 ( 皖ICP备11002685号

GMT+8, 2017-8-20 04:37 , Processed in 0.296875 second(s), 21 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表