Linux学习总结(三十六)lamp之配置防盗链

一配置防盗链

  • referer,中文释义为来源,也就是在说网站从哪里访问过来,在访问日志里,它指的是不同网站之间的跳转链接信息。也就是跳转源的网址。
    虽然直接在浏览器输入某个站点,跟从其他网站打开该网站,我们感受到的效果没有差别,但是服务器端会记录一个跳转信息,他就是一个referer,如果没有经过跳转,则是一个空的referer。这样我们统计该referer信息,就能统计出某个网站对于我们网站的流量贡献。
  • 防盗链机制就是通过referer的控制,拒绝跳转访问我们自己认为的稀缺资源。比如,淘宝网商之间,既有互相打广告的合作,又有对市场份额的竞争。这时我们可以把我们网站的主页,挂在其他店铺,但是我又不允许其他店铺直接链接我辛苦拍来的产品照片,(这个链接很容易获取)就可以针对该图片做一个防盗链。
    通过限制referer来实现防盗链的功能
    配置虚拟主机为下面的样子。为了节省空间,看起来有清晰,删掉了之前的配置。
    <VirtualHost *:80>
    DocumentRoot "/data/wwwroot/www.123.com"
    ServerName www.123.com
    ServerAlias 123.com
    <Directory /data/wwwroot/www.123.com>
        SetEnvIfNoCase Referer "http://www.123.com" local_ref
        SetEnvIfNoCase Referer "http://123.com" local_ref
        SetEnvIfNoCase Referer "^$" local_ref
        <filesmatch "\.(txt|doc|mp3|zip|rar|jpg|gif)">
            Order Allow,Deny
            Allow from env=local_ref
        </filesmatch>
    </Directory>
    </VirtualHost>

    curl -e "http://www.aminglinux.com/123.html" 自定义referer,注意该referer的格式
    针对php文件和图片我们分别作带referer和不带referer的测试:
    curl -x127.0.0.1:80 123.com/admin.php -I
    curl -x127.0.0.1:80 -e "http://www.baidu.com" 123.com/admin.php -I

    curl -x127.0.0.1:80 123.com/images/1.jpg -I
    curl -x127.0.0.1:80 -e "http://www.baidu.com" 123.com/images/1.jpg -I

二 限制ip访问

对于一些比较重要的网站,除了我们前面提到的使用用户认证限制访问之外,还可以通过限制访问ip实现访问控制。比如涉及后台的访问,我们可以只开放内网ip或这极少数ip。我们可以指定限制访问的目录或者是某类文件。
访问控制Directory
核心配置文件内容

<Directory /data/wwwroot/www.123.com/admin/>
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
    </Directory>

-t graceful 后,我们分别用127.0.0.1和本机ens33 ip 192.168.226.130进行测试
curl -x127.0.0.1:80 123.com/admin/admin.php -I

curl -x192.168.226.130:80 123.com/admin/admin.php -I

curl -x192.168.226.130:80 123.com/admin.php -I

访问控制FilesMatch
核心配置文件内容

<Directory /data/wwwroot/www.123.com>
    <FilesMatch  "admin.php(.*)">
        Order deny,allow
        Deny from all
        Allow from 127.0.0.1
    </FilesMatch>
</Directory>

-t graceful 后继续测试
curl -x127.0.0.1:80 123.com/admin.php -I

curl -x192.168.226.130:80 123.com/admin.php -I

curl -x192.168.226.130:80 123.com/345.php -I

filematch 匹配amin.php 字段,包含该字段则只允许127.0.0.1这个ip访问。
最后总结:
我们发现防盗链和后面的访问控制 order 这一行有区别。 防盗链中是这样的,Order Allow,Deny 意思先执行允许,再执行拒绝。先允许所有的访问,再拒绝filematch匹配的文件的带refer访问。 访问控制中是这样的,Order deny,allow 意思是针对目录或者文件,先拒绝所有ip访问,再放行指定ip。

原文地址:http://blog.51cto.com/12606610/2104592

时间: 2024-10-05 04:43:47

Linux学习总结(三十六)lamp之配置防盗链的相关文章

linux学习笔记-第十六课-日常管理(三)

一.任务计划 1 )任务计划分为两类: 一类是一次性任务计划,由at控制的 另一类是例行周期性计划,由cron控制的 2 )at 一次性任务计划 选项与参数:    -m  :当 at 的工作完成后,即使没有输出信息,亦以 email 通知使用者该工作已完成.    -l  :at -l 相当於 atq,列出目前系统上面的所有该使用者的 at 排程:    -d  :at -d 相当於 atrm ,可以取消一个在 at 排程中的工作:    -v  :可以使用较明显的时间格式列出 at 排程中的

Linux学习笔记(十六)lvm、磁盘故障小案例

一.LVM介绍LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制LVM - 优点:LVM通常用于装备大量磁盘的系统,但它同样适于仅有一.两块硬盘的小系统. 小系统使用LVM的益处: 传统的文件系统是基于分区的,一个文件系统对应一个分区.这种方式比较直观,但不易改变: 1.不同的分区相对独立,无相互联系,各分区空间很易利用不平衡,空间不能充分利用: 2.当一个文件系统/分区已满时,无法对其扩充,只能采用重新分区/建立文件系统

linux学习笔记-第二十六课-Samba与squid

一.Samba Samba是SMB的一种实现方法,主要用来实现Linux系统的文件和打印服务.Linux用户通过配置使用Samba服务器可以实现与Windows 用户的资源共享.守护进程smbd和nmbd是Samba的核心,在全部时间内运行.nmbd程序使得通过企图计算机可以浏览Linux服务器. 1.Samba的安装 我们只通过yum安装 [[email protected] ~]# yum install -y samba 2.Samba配置 [[email protected] ~]# v

【转载】JMeter学习(三十六)发送HTTPS请求

Jmeter一般来说是压力测试的利器,最近想尝试jmeter和BeanShell进行接口测试.由于在云阅读接口测试的过程中需要进行登录操作,而登录请求是HTTPS协议.这就需要对jmeter进行设置. (一)设置HTTP请求 我们首先右键添加线程组,然后继续右键添加控制器,由于登陆操作只请求一次,因而选择仅一次控制器.接下来右键添加sampler->HTTP请求,设置HTTP请求.这里注意的地方首先是端口号,如果只是普通的HTTP协议,默认不填,而这里是HTTPS协议,因而填端口号443.另外“

JAVA学习第三十六课(常用对象API)- 集合框架(四)— Set集合:HashSet集合演示

随着Java学习的深入,感觉大一时搞了一年的ACM,简直是明智之举,Java里很多数据结构.算法类的东西,理解起来就轻松多了 Set集合下有两大子类开发常用 HashSet集合 .TreeSet集合 Set集合的元素是不重复且无序 一.HashSet集合 API文档解释:此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持.它不保证 set 的迭代顺序:特别是它不保证该顺序恒久不变.此类允许使用null 元素. 此类为基本操作提供了稳定性能,注意,此实现不是同步的. 由上可

【Unity 3D】学习笔记三十六:物理引擎——刚体

物理引擎就是游戏中模拟真是的物理效果.如两个物体发生碰撞,物体自由落体等.在unity中使用的是NVIDIA的physX,它渲染的游戏画面很逼真. 刚体 刚体是一个很很中要的组件. 默认情况下,新创的物体是不具备物理效果的,而刚体组件能够给物体加入一些常见的物理属性.比方说:质量.摩擦力.碰撞等. 假设对象加入了刚体组件.那么它将感应物理引擎中的一切物理效果. 简单的使用下 首先穿件一个游戏对象,接着在hierarchy视图中选择创建的游戏对象.然后在unity导航菜单条中选择component

salesforce 零基础学习(三十六)通过Process Builder以及Apex代码实现锁定记录( Lock Record)

上一篇内容是通过Process Builder和Approval Processes实现锁定记录的功能,有的时候,往往锁定一条记录需要很多的限制条件,如果通过Approval Processes的条件判断写起来可能很麻烦,有些逻辑通过Apex写起来很容易,此篇内容为通过Process Builder 和Apex代码实现锁定记录. 需求:对Opportunity表进行判断是否加锁或者解锁.当Delivery/Installation Status这一项的值为'Completed'情况下加锁,为其他

Linux学习笔记&lt;二十六&gt;——DNS服务器

DNS(Domain Name System 域名系统):提供Internet上域名到IP地址的映射 域名:又叫主机名,FQDN(Full Qualified Domain Name完全限定域名) 基本信息: Linux中通常使用bind服务来提供DNS服务器 应用层协议 基于UDP53端口号:用于查询 基于TCP53端口号:用于主从服务器同步数据 基于TCP953端口号:rndc用于远程控制DNS服务器 解析方式: 正向:FQDN <--> IP 反向:IP <-->FQDN 解

javaweb学习总结(三十六)——使用JDBC进行批处理

在实际的项目开发中,有时候需要向数据库发送一批SQL语句执行,这时应避免向数据库一条条的发送执行,而应采用JDBC的批处理机制,以提升执行效率. JDBC实现批处理有两种方式:statement和preparedstatement 一.使用Statement完成批处理 1.使用Statement对象添加要批量执行SQL语句,如下: 1 Statement.addBatch(sql1); 2 Statement.addBatch(sql2); 3 Statement.addBatch(sql3);