防恶意解析,禁止用IP访问网站的Apache设置+如何阻止网站被恶意反向代理访问

2023-11-04

一般来说,网站可以用域名和IP来访问。你的网站可以通过IP直接访问,本来这没什么问题,但是会有些隐患:

  1. 由于搜索引擎也会收录你的IP地址的页面,所以同一个页面搜索引擎会重复收录,造成页面的权重不如单个收录高。
  2. 域名恶意指向的可能。还记得去年还是前年的 google.com.sb 事件吗?google.com.sb 这个域名被恶意指向了百度,后来证实了 google.com.sb 这个域名为第三者恶意指向的,并不是Google所为。当然这只是个玩笑,但是如果被人恶意用别的域名解析到你的IP的话,那么你的网站就能通过别人的域名来访问了。接下来会发生什么?假如那域名是不友善的域名,比如曾经指向非法网站,容易引发搜索引擎惩罚,连带IP受到牵连。即使域名没什么问题,但流量也会被劫持到别的域名,从而遭到广告联盟的封杀。
  3. ……

如何解决这个问题?最直接的方法是让用户只能通过域名来访问网站,而不能通过IP来直接访问。这个可以修改Apache配置文件httpd.conf来实现。下面是小站的实现:

01 NameVirtualHost 121.*.*.*
02 <VirtualHost 121.*.*.*>
03 ServerName 121.*.*.*
04 <Location />
05 Order Allow,Deny
06 Deny from all
07 </Location>
08 </VirtualHost>
09
10 <VirtualHost 121.*.*.*>
11 DocumentRoot /var/www/nowamagic/
12 ServerName www.nowamagic.net
13 </VirtualHost>
14
15 <VirtualHost 121.*.*.*>
16 DocumentRoot /var/www/nowamagic/
17 ServerName nowamagic.net
18 </VirtualHost>

第一部分代码是实现拒绝直接通过 121.*.*.* 这个IP的任何访问请求,这时如果你用 121.*.*.* 访问,会提示拒绝访问。

第二部分代码就是允许通过 http://www.nowamagic.net/ 这个域名访问,主目录指向 /var/www/nowamagic/ (这里服务器OS是 CentOS)

第三部分代码是允许不带 www 的域名访问,应该能和上面的合并一起写吧。

在这里记录下,方便以后信手拈来。


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

什么是反向代理?

先说说正向代理的概念:

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

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

那么反向代理的概念呢?

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

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

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

恶意反向代理的危害

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

  • 首先肯定会占用服务器资源,网站打开速度受影响。
  • 其次,别人通过代理盗用你的网站数据,对用户与不是那么智能的搜索引擎而言,相当于建了一个与你一模一样的站点,那么很有可能你的站点会进搜索引擎沙箱,甚至被降权。
  • 如果被恶意代理的页面,还挂有你的联盟广告(比如Adsense),这就十分危险了,如果有人点击了上面的广告,很容易被Adsense封号。
  • 还有很多危害,读者可以自行脑补……
js 级别的解决方案
1 <script type="text/javascript">
2 if (document.domain != 'nowamagic.net' && document.domain !='www.nowamagic.net'){
3     window.location.href='http://www.nowamagic.net/';
4 }
5 </script>

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

题外话:如何防止网站被iframe嵌入。有些人用iframe做了个框架,把我们网站嵌入其中,访客来浏览的时候,好像是在浏览他自己的网站一样,那么如何解决呢?以下方法可破:

1 <script type="text/javascript">
2 <!--
3 if (top.location != self.location)top.location=self.location;
4 // -->
5 </script>
php 级别的解决方案

js 级别的解决方案虽然能够让恶意代理页面跳回来,但是对搜索引擎不怎么友好。下面是服务器端(PHP)的解决方案,代码比较简单,就不多说了。

01 $proxy_rs $this -> proxy_filter();
02 if$proxy_rs != 'nowamagic.net' || $proxy_rs != 'www.nowamagic.net' )
03 {
04     echo '非法反向代理访问';
05     //header('Location: http://www.nowamagic.net/');
06     exit;
07 }
08          
09 public function proxy_filter()
10 {
11     /*
12     $svrUrl = 'http://' . $_SERVER['SERVER_NAME'].$_SERVER["PHP_SELF"];
13     if (!empty($_SERVER["QUERY_STRING"]))
14     {
15         $svrUrl .= "?".$_SERVER["QUERY_STRING"];
16     }
17      
18     return $svrUrl;
19     */
20     return $_SERVER['SERVER_NAME'];
21 }
htaccess 级别的解决方案

.htaccess

1 RewriteEngine On
2 RewriteBase /
3 php_value auto_append_file proxy.php

proxy.php

1 <?php
2 $f getenv("HTTP_X_FORWARDED_FOR");
3 $server getenv("HTTP_HOST");
4 if (($f!="")&&($server!="nowamagic.net")&&($server!="www.nowamagic.net")){
5     echo '本服务器禁止恶意反向代理!';
6 }
7 ?>

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


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

防恶意解析,禁止用IP访问网站的Apache设置+如何阻止网站被恶意反向代理访问 的相关文章

随机推荐

  • cxf的web service服务,包含client端、service端

    1 下载需要的客户端 服务端Jar 客户端jar包链接 https github com zhangliqingyun jarlist tree master webserviceclient 服务端jar包链接 https github
  • MySQL 存储过程查询远程数据库的方法

    这几天有个任务 需要在存储过程中读取远程数据库一个表的数据存到本地表 然后进行计算 在网上查找了资料 Oracle和SQL Server查询远程数据库是比较方便的 MySQL麻烦一些 需要在本地建立一个需要查询的远程的表结构完全一样的表 并
  • Java单链表中的元素互换位置_java实现单链表及倒置单链表中的元素

    单链表的结构比较简单 图示如下 单链表有很多个节点构成 每个节点由指针域和数值域构成 指针指向下一个节点的数值域 最后一个节点的指针指向的是NULL java实现单链表的一些基本的操作 package test import javax x
  • RabbitMQ系列(二)VirtualHost作用及角色权限管理实战

    VirtualHost 作用及用法 Virtual Hosts的使用场景 多租户的使用场景 比如主机资源紧缺情况下开发和测试共用一个RabbitMQ 可以使用Virtual Hosts将开发和测试隔离开 1 管理界面 2 VirtualHo
  • rust学习网站

    https photino gitbooks io rust notes content programming paradigms html rutst学习网站 https kaisery gitbooks io rust book ch
  • 线性表定义--线性表的顺序存储结构+链式存储结构+循环链表+双向链表

    线性表 一 线性表定义 1 线性表的定义 通过一个例子来体验什么是线性表的定义 小朋友出游排队 谁在谁的前面 谁在谁的后面 保证不会有人丢失 定义 线性表 List 零个或多个数据元素的有限序列 注意 1 线性表是一个序列 也就是说 线性表
  • 【自然语言处理】关系抽取 —— SimpleRE 讲解

    SimpleRE 论文信息 标题 An Embarrassingly Simple Model for Dialogue Relation Extraction 作者 Fuzhao Xue 期刊 ICASSP 2022 发布时间与更新时间
  • 【Ubuntu】安装免费版Typora

    下载deb包 wget https file babudiu com f yXCL Typora Linux 0 11 18 amd64 deb 安装 sudo dpkg i Typora Linux 0 11 18 amd64 deb 参
  • 【蓝桥杯题解】特殊日期(判断合法日期模板)

    对于一个日期 我们可以计算出年份的各个数位上的数字之和 也可以分别计算月和日的各位数字之和 请问从 19001900 年 11 月 11 日至 99999999 年 1212 月 3131 日 总共有多少天 年份的数位数字之和等于月的数位数
  • centos 卸载程序

    1 查询软件列表 rpm qa grep 软件名 2 卸载软件 sudo yum remove 软件名
  • SQLite安装配置详细教程2023版

    前言 SQLite 是一款轻型的数据库 是遵守ACID的关系型数据库管理系统 它的设计目标是嵌入式的 而且已经在很多嵌入式产品中使用了它 它占用资源非常的低 它能够支持Windows Linux Unix等等主流的操作系统 同时能够跟很多程
  • 利用强化学习进行股票操作实战(三)

    与上一篇文章相同之处 对于交易策略 与上一篇文章相同 当发出买入指令时 一次性全部买入 当发出卖出指令时 一次性全部卖出 还没有添加加减仓操作 模型仍然用的是DQN模型 新增内容 在之前的基础上加入了交易手续费 印花税等 在强化学习这个领域
  • 基于FPGA驱动VGA显示图片的小问题

    学习VGA显示图片的过程中 遇到了一个小问题 我在显示屏上开了一个60x60的框 放了一张图片进去显示 但是最终的结果如下图所示 出现了一个竖黑边 看了看代码 分析了一下逻辑没问题 然而看这个显示那肯定是有问题的 然后仿真了一下看看 时序图
  • 在Vue2和Vue3中事件总线的使用与区别

    前提 在Vue升级到3 0版本后 事件总线使用的方式有些许改变 Vue2可以直接使用new Vue 在Vue3中 推荐使用mitt来帮助我们实现全局事件总线和局部事件总线 接下来让我们来对比2和3版本的使用和区别 Mitt是一个微型的 Ev
  • 可靠传输的运输层协议及编程实现

    在计算机网络中 运输层协议负责在通信实体之间提供可靠的数据传输 可靠传输意味着数据的发送方可以确保数据在传输过程中不会丢失 损坏 重复或无序到达接收方 本文将介绍一种常用的可靠传输协议 停等协议 并提供其简单的编程实现 停等协议 Stop
  • STM32 F103C8T6学习笔记4:时钟树、滴答计时器、定时器定时中断

    今日理解一下STM32F103 C8T6的时钟与时钟系统 滴答计时器 定时器计时中断的配置 文章提供原理 代码 测试工程下载 目录 时钟树与时钟系统 滴答计时器 定时器计时中断 测试结果 测试工程下载 时钟树与时钟系统 该系统介绍在 STM
  • “思维导图”常用的快捷键总结

    还记得老师上课说过 你们把那些贴来的东西放在自己的博客上就以为是自己的了吗 其实不然 我们有些时候过于追求是否做了 而没有考虑到做这个的意义何在 正如贾琳同学所说 不要为了做去做 而要将自己做过的东西变成自己所能够吸收的 变成自己前进的 汽
  • 面向组件编程之Unity 5.normalized不改变原向量,Normalize改变原向量

    using System Collections using System Collections Generic using UnityEngine public class TransformFeng2 MonoBehaviour Us
  • Android AlarmManager实现定时任务(也就是闹钟) 附Demo源码

    原文链接https www shanya world archives a7b639d4 html 创建定时任务 Android中的定时任务一般有两种实现方式 一种是使用 Java API 里提供的 Timer 类 一种是使用 Androi
  • 防恶意解析,禁止用IP访问网站的Apache设置+如何阻止网站被恶意反向代理访问

    一般来说 网站可以用域名和IP来访问 你的网站可以通过IP直接访问 本来这没什么问题 但是会有些隐患 由于搜索引擎也会收录你的IP地址的页面 所以同一个页面搜索引擎会重复收录 造成页面的权重不如单个收录高 域名恶意指向的可能 还记得去年还是