`

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 防盗链的技术小结

    ### Apache防盗链技术详解 #### 一、背景与问题描述 在互联网的发展过程中,网站间的资源共享变得越来越频繁,其中图片资源的共享尤为突出。对于个人网站或者小型网站来说,经常面临的一个问题是“图片盗链”。这...

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

    ### Apache虚拟目录和虚拟主机设置详解 #### 一、虚拟目录(Alias) 在Apache服务器配置中,虚拟目录(也称为别名)是一种重要的技术,它允许我们定义一个URL路径,并将其映射到服务器上的实际物理目录。这不仅提高...

    linux配置防盗链及访问控1

    2. **配置Apache防盗链** 在Apache配置文件中,我们可以通过`SetEnvIfNoCase`指令来定义允许的Referer。在示例中,配置文件`/usr/local/apache2.4/conf/extra/httpd-vhosts.conf`中,设置了允许的Referer为`...

    网站防盗链(IIS7.0与IIS7.5配置防盗链)

    除了上述方法,还可以通过设置自定义HTTP响应标头(如`X-Accel-Redirect`)或使用其他第三方模块如mod_security(Apache服务器上的扩展)来实现防盗链。然而,这些方法超出了IIS7.0和7.5的基本配置范围,需要更深入...

    Java爬虫小例子,爬取小网站,突破防盗链下载图片

    这个"Java爬虫小例子"项目展示了如何利用Java来爬取小型网站,特别是那些有防盗链保护的图片资源。防盗链是网站为了防止其他网站直接引用其服务器上的资源而采取的一种防护措施。下面我们将深入探讨相关的知识点。 ...

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

    在这个场景中,我们重点关注的是使用HttpHandler和Apache服务器来构建防盗链模块的方法。 HttpHandler是ASP.NET框架中的一个关键组件,它允许开发者自定义HTTP请求的处理流程。通过创建并注册HttpHandler,我们可以...

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

    【Nginx与Apache防盗链配置方法】 在互联网上,防止其他网站未经许可直接引用(盗链)服务器上的资源,如图片、视频等,对于节省带宽和保护内容权益至关重要。Nginx和Apache作为两种广泛应用的Web服务器,都有各自...

    优化dis

    Apache防盗链技术是一种防止其他网站直接链接到自己网站上受版权保护的资源,如图片、视频、PDF文件等,从而节省带宽和防止资源滥用的手段。从给定文件中,我们可以了解到实现Apache防盗链的两种方法,下面详细介绍...

    呆呆防盗链扩展版 v1.4

    《呆呆防盗链扩展版 v1.4:服务器流量保护与外链管理详解》 在互联网服务中,服务器流量的管理至关重要,特别是对于提供大量资源下载或内容分享的站点而言,防止恶意或非授权的外部链接(即盗链)窃取服务器资源...

    [其他类别]Apache 防盗连工具_apache_link.zip

    "Apache防盗连工具_apache_link.zip"这个压缩包可能包含了用于帮助用户配置Apache服务器,防止其资源被他人未经许可地链接和使用的相关资料。下面我们将详细讨论Apache防盗连技术及其配置方法。 首先,我们需要了解...

    文件防盗链的实现(射雕英雄java传系列)

    标题中的“文件防盗链的实现(射雕英雄java传系列)”指的是通过编程技术来防止他人未经许可盗用网站上的文件,如图片、音频或视频等。在这个特定的上下文中,我们可能关注的是Java语言实现的防盗链技术。防盗链是为了...

    PHP防盗链的基本思想 防盗链的设置方法

    PHP防盗链是一种保护网站资源不被非法使用的技术手段。当一个网站的图片、视频、软件或其他文件被别的网站通过链接的方式直接...网站开发者在实现防盗链时,应该注意技术的更新换代,保证防盗链功能的安全性和有效性。

    在IIS下真正能用的ISAPI-Rewrite防盗链规则写法

    ISAPI_Rewrite 是一款用于IIS服务器的URL重写工具,它允许管理员通过规则配置,实现URL美化、防盗链、动态网站静态化等多种功能。本文主要介绍如何在IIS下利用ISAPI_Rewrite编写防盗链规则,以保护网站资源免受非法...

    Apache下MP3 防盗链的解决办法

    针对这种情况,Apache服务器提供了一种解决方案,即通过其内置的模块Mod_Rewrite实现MP3防盗链功能。 Apache的Mod_Rewrite模块是一个强大的URL重写工具,它可以基于特定的规则对请求的URL进行转换。在MP3防盗链的...

    apache rewrite防盗链三例

    Apache Rewrite 防盗链三例 Apache Rewrite 是一个功能强大的 URL 重写模块,可以用来实现防盗链、 URL 重写、重定向等功能。防盗链是指防止其他网站非法使用本站的资源,例如图片、视频、CSS、JS 等。下面是三个...

    apache urlrewrite防盗链功能配置

    总的来说,Apache URLRewrite的防盗链配置是一项有效的网站管理策略,能够保护你的网络资源不被滥用,同时也可以根据需要扩展到其他类型的文件或更复杂的逻辑。在实际操作中,应确保配置的灵活性和适应性,以便应对...

    [影音娱乐]无组件音乐防盗链程序(PHP)_ft_php.zip

    4. **URL重写与路由**:为了实现防盗链,可能需要使用URL重写技术(如Apache的mod_rewrite),或者在PHP中自定义路由逻辑,以隐藏真实文件路径。 5. **Session和Cookie管理**:验证用户身份并跟踪会话状态可能需要...

    网站图片防盗Apache配置

    #### Apache配置防盗链的基本原理 防盗链的核心思路是通过服务器端设置来限制非授权站点对网站资源的引用。具体到Apache服务器上,主要是利用`.htaccess`文件中的规则来判断请求来源是否合法,并据此决定是否返回...

Global site tag (gtag.js) - Google Analytics