`

apache 防盗链

阅读更多

每个网站所有者都在尽力美化自己的网站,使它看上去更酷、更具有吸引力,其中最常见的方法就是使用图片、Logo及Flash等。但是,这也会带来一个问题,因为越漂亮、越吸引人的网站,漂亮的图片和Flash等就容易被别的网站悄悄的盗用。下面我们就一起讨论如何防止网站图像被盗用。
    需要解决的问题

    简单的说,这里有两种不同的盗用行为:
    1. 使用HTML标记IMG在自己的网站中引用网站的图片。
    2. 从网站上下载图片,然后放在自己的网站上。

    对于第一种的盗用行为,合法网站的图片被用来美化装饰其它网站,这种盗用对合法网站的损害比较大,因为访问非法网站的访问者其实是从合法网站获取图片的,合法网站的日志文件充满了访问请求记录,并且带宽被非法访问消耗,而合法网站却没有得到任何好处。这种类型的盗用通过技术手段完全可以被防止。

    第二种类型的盗用相对来说比较阴险,浏览者在非法网站直接访问非法的图片,而合法网站的版权受到侵害,却得不到赔偿,甚至无法发现这种盗用。因为Web的工作方式对这种类型的盗用实际上无法被阻止,但是可以使得这种盗用更加困难。

    完全杜绝这两种盗用行为是不现实的,但是通过技术手段可以使得这种盗用非常困难。在Apache环境下,通过配置可以限制网站图片被盗用。

    标识需要保护的文件

    作为网站管理员,最大的希望就是能够保护网站上所有文档,但是从技术角度考虑这种想法是不现实的,因此我们这里只讨论对图片文件的保护。

    作为保护的第一步,首先需要标识出需要保护的文件,然后才能进一步对被标识的文件进行保护。在Apache配置文件中添加如下内容:


<FilesMatch "\.(gif|jpg)"> [这里添加保护限制命令]
</FilesMatch>


    将容器命令包含在或等容器中,或者单独列出,不处于任何保护容器中,这样就会对网站所有文件进行保护,甚至可以存放在.htaccess文件。将该容器放在不同的位置,保护的范围机会有所不同。

    Referer HTTP头字段

    当用户访问Web服务器请求一个页面时,用户浏览器发送的HTTP请求中会有一个被称为HTTP请求头(HTTP Request Header)的信息,这个头信息中包含客户请求的一些信息,例如发出请求客户主机的浏览器版本、用户语言、用户操作系统平台、用户请求的文档名等,这些信息以变量名/变量值的方式被传输。

    在这些信息中,Referer字段对于实现防止图片盗用非常重要。Referer字段指定客户端最后一个页面的URL地址。例如,如果用户访问页面A,然后点击在页面A上到页面B的链接,访问页面B的HTTP请求会包括一个Referer字段,该字段会包括这样的信息“这个请求是来自于页面A”。如果一个请求不是来自于某个页面,而是用户通过直接在浏览器地址栏输入页面A的URL地址的方式来访问页面A,那么在HTTP请求中则不会包括Referer字段。这样对于我们防止盗链有什么帮助呢?Referer字段是帮助判断对图像的请求是来自自己的页面,还是来自其它网站。

    使用SetEnvIf对图像进行标记

    作为一个简单的例子,假设需要保护的网站的主页面为http://my.apache.org,这时候希望限制所有不是源于本网站的网络访问请求(例如只允许访问包含在本网站页面内的图片)。这里可以使用一个环境变量作为一个标记,如果条件满足时就设置该变量,如下所示:
    SetEnvIfNoCase Referer "^http://my\.apache\.org/" local_ref=1

    当Apache处理一个请求时,它会检查HTTP请求头中的Referer字段,如果该请求来源于本网站(也就是请求页面的URL为本网站域名),则设置环境变量local_ref为1。

    在双引号中的字符串是一个正则表达式,只有匹配该正则表达式,环境变量才会被设置。本文不讨论如何使用正则表达式,这里只需要理解SetEnvIf*命令会使用正则表达式作为参数。

    SetEnvIfNoCase命令的“NoCase”部分表示这里的正则表达式忽略大小写,'http://my.apache.org/'、'http://My.Apache.Org/'或 'http://MY.APACHE.ORG/'都可以匹配条件。

    在访问控制中使用环境变量

    Apache配置文件中的Order、Allow和Deny命令可以实现对文档的基于环境变量的访问控制,使用Order、Allow和Deny命令首先要考虑的是Allow和Deny命令的顺序对于Apache处理结果的影响,应该以下面的方式使用:
    Order Allow,Deny

    这里表示Apache首先处理该HTTP请求相关的Allow命令,然后处理相关的Deny命令。这种处理方式的默认策略是Deny,所以除非有明确的允许的设置,否则该请求就会被拒绝,任何非法访问将无法成功。

    因此,在Apache的配置文件httpd.conf中添加如下命令,来实现本地引用发挥作用:


Order Allow,Deny
Allow from env=local_ref


    这样只有在local_ref变量被定义的情况下,该请求才会被允许;否则其它所有请求和访问将会被拒绝,因为这些请求不满足Allow条件。

    注意,请不要在.htaccess和httpd.conf中使用容器命令,这里不需要该容器命令,除非有特殊的需求,例如希望Get请求和Post请求进行不同的处理。

    把这些相关设置放在一起,在Apache的配置文件中就会有如下内容:


SetEnvIfNoCase Referer "^http://my\.apache\.org/" local_ref=1
<FilesMatch "\.(gif|jpg)">
Order Allow,Deny
Allow from env=local_ref
</FilesMatch>


    如上配置可以存放在服务器配置文件httpd.conf中,或者存放在.htaccess文件中,最后的效果是一样的:在这些命令作用的范围内,只有从本网站引用的图片才可以被访问。

    对图片进行水印处理

    上面介绍的方法并不能完全防止图像盗链,这是因为有些执著的盗用者可以伪造Referer值来盗用图片,使相关设置失效,所以不可能完全防止网站图片被盗链,但是上面采取的措施会使得盗链变得很困难。

    此外,还有一个防止图片被盗用的方法,就是对网站的图片都进行水印处理。对一个数字图片进行水印处理是指在图片中加入一个特殊的签名编码,并且可以进行验证和检测,数字水印并不会降低图片的质量,甚至可以实现图像被切割以后的剩余部分仍然会包括水印信息。图片被再次编辑、打印,并再次扫描以后,水印仍然可以被检测到。因此,水印技术是一个非常好的保护图片不被盗用的技术。

    记录盗用请求

    如果想知道自己网站的艺术品是否被盗,可以尝试使用同样的侦测和环境变量来记录可疑请求。例如,在httpd.conf文件中添加如下命令,那么会在/usr/local/web/apache/logs/poachers_log文件中记录所有具有非法的Referer头信息的访问请求:


SetEnvIfNoCase Referer      "!^http://my\.apache\.org/" not_local_ref=1
SetEnvIfNoCase Request_URI "\.(gif|jpg)"               is_image=1
RewriteEngine On
RewriteCond    ${ENV:not_local_ref} =1
RewriteCond    ${ENV:is_image}      =1
RewriteRule    .*                   -     [Last,Env=poach_attempt:1]
CustomLog logs/poachers_log         CLF   env=poach_attempt


    在上面代码中,头两行为条件设置标记(也就是没有正确的本地Referer的图片文件),RewriteCond检测是否该标记被设置,然后RewriteRule设置第三个标记,最后一行使得这样的访问请求被记录在特定的文件中。

    上面简单介绍了在Apache环境下,如何通过配置来限制网站图片被盗用的方法,抛砖引玉,希望大家将自己更好的经验介绍出来。
1.利用rewrite 确认你的apache 能使用rewrite mod
  1.利用rewrite 确认你的apache 能使用rewrite mod
  RewriteEngine on
  RewriteCond %{HTTP_REFERER} !^http://linuxsky.net[/size]/.*$ [NC]
  RewriteCond %{HTTP_REFERER} !^http://linuxsky.net$ [NC]
  RewriteCond %{HTTP_REFERER} !^http://www.linuxsky.net/.*$ [NC]
  RewriteCond %{HTTP_REFERER} !^http://www.linuxsky.net$ [NC]
  RewriteRule .*.(gif|jpb|png|css|js|swf])$ http://www.linuxsky.net [R,NC]
  
  其中有色的地方都是要改为你的:
  红色:就是改为你提供下载页面的地址,也就是只有通过这个地址才可以下载你所提供的东东。
  蓝色:就是要保护文件的扩展名(以|分开),也就是说以这些为扩展名的文件只有通过红色的地址才可以访问。
  绿色:如果不是通过红色的地址访问蓝色这些为扩展名的文件时就回重定向到绿色地址上。
  
  
  2.利用SetEnvIfNoCase 和 access
  
  SetEnvIfNoCase Referer "^http://linuxsky.net" local_ref=1
  SetEnvIfNoCase Referer "^http://www.linuxsky.net" local_ref=1
  <FilesMatch ".(gif|jpb|png|css|js|swf)">
  Order Allow,Deny
  Allow from env=local_ref
  </FilesMatch>
  
  红色为信任站点,蓝色为受保护的文件扩展名。

分享到:
评论

相关推荐

    apach防盗链配置

    apache防盗链使用、内含图片解说、文档等

    Apache 防盗链的技术小结

    一. 遭遇图片盗链 个人网站使用的是国外付费空间,有流量限制。今天是 2007.03.29,收到主机商的通知邮件,提醒我本月的流量即将超出配额。——超出流量,就要向万恶的美帝资本家交银子,吓我一跳,平常网站的流量...

    apache虚拟目录和虚拟主机设置详解

    apache服务器 虚拟目录和虚拟主机设置详解

    防盗链模块,(HttpHandler+Apache技术)

    1、防盗链模块, 2、(HttpHandler+Apache技术)

    apache rewrite防盗链三例

    apache rewrite防盗链三例

    Nginx和Apache几种防盗链配置方法实例

    主要介绍了Nginx和Apache几种防盗链配置方法实例,本文使用判断来路的方法实现防盗链,分别给出Nginx和Apache配置实例,需要的朋友可以参考下

    php实现图片文件与下载文件防盗链的方法

    在php中最简单的防盗链办法就是利用php的$_SERVER[‘HTTP_REFERER’]函数来操作了,但是此方法不可靠,我们最终还是需要使用apache,iis来进行操作的,具体的操作方法如下: php防盗链: 复制代码 代码如下:&lt;?php ...

    网站安全狗apache V3.1版

    网站安全狗apache版是一款集网站内容安全防护、 网站资源保护及网站流量保护功能为一体的服务器工具。 网站安全狗apache V3.1版更新内容: 1、新增支持64位apache...10、优化防盗链的判断逻辑,并美化防盗链拦截页面

    Apache下MP3 防盗链的解决办法

    对于很多放MP3的网站来说,防盗链对于控制流量是个非常重要的事情,尤其是MP3被百度收录之后,那流量大的惊人,每天都上百G的流量,很快你的站点的流量就会用光了。

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例033 Zend Studio中部署Apache服务器 60 第2章 PHP基础 63 2.1 基本语法 64 实例034 在页面中打印PHP的配置信息 64 实例035 在页面中打印服务器时间 65 实例036 在页面中打印当前执行的PHP文件名 67 实例037 区分...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例033 Zend Studio中部署Apache服务器 60 第2章 PHP基础 63 2.1 基本语法 64 实例034 在页面中打印PHP的配置信息 64 实例035 在页面中打印服务器时间 65 实例036 在页面中打印当前执行的PHP文件名 67 实例037 区分...

    htaccess 防盗链,防止目录浏览等10大技巧

    htaccess 防盗链,防止目录浏览等10大技巧,使用apache服务器的朋友可以参考下

    Apache Web应用详解及优化全攻略

    一、apache优化之保持连接、网页传输压缩、页面缓存时间...三、apache优化之防盗链; 四、apache的ab压力测试; 五、apache 日志分析工具; 六、apache访问控制; 七、apache优化之日志分割; 八、apache实现虚拟主机;

    apache urlrewrite防盗链功能配置

    配置虚拟主机时,在配置文件中加入如下内容

    网站安全狗Apache版 v4.0.18089

    (5)支持Apache网站的防盗链及重要资源防下载功能;(6)支持Apache网站的CC攻击防护网站安全狗apache v3.5版全部更新内容:1、新增网站后台防护功能;2、CC攻击防护功能新增路径白名单;3、整合最新网马查杀引擎和...

    Apache中利用mod_rewrite实现防盗链

    前提Apache中的mod_rewrite模块为激活状态,既然要消灭掉mp3文件的盗链就顺便也把图片盗链的设置给做了,下面是我在网站根目录的.htaccess文件中的配置,供同病相怜之人参考:。 view plaincopy to clipboard...

    nginx rewrite重写规则与防盗链配置方法教程详解

    导读:nginx rewrite重写规则与防盗链配置方法,rewrite规则格式中flag标记的几种形式,盗链时返回403错误,允许的域名直接跟在第二行的域名后面。 nginx rewrite重写规则与防盗链配置方法如下所示: nginx rewite...

Global site tag (gtag.js) - Google Analytics