zoukankan      html  css  js  c++  java
  • 谈一谈网站防盗链

    1. #开启重写引擎  
    2. RewriteEngine on  
    3. #图片防盗链  
    4. RewriteCond %{HTTP_REFERER} !http://rewrite/.*  
    5. RewriteRule .*.(jpg|jpeg|png|gif)  daotu.jpg  

    引子:明明引用了一个正确的图片地址,但显示出来的却是一个红叉或写有“此图片仅限于***网站用户交流沟通使用”之类的“假图片”(下图便是网易博客的防盗链效果)。用嗅探软件找到了多媒体资源的真实地址用下载软件仍然不能下载。下载一些资源时总是出错,如果确认地址没错的话,大多数情况都是遇上防盗链系统了。常见的防盗链系统,一般使用在图片、音视频、软件等相关的资源上。

    一、什么是防盗链系统
            在确保地址正确的情况下,不能下载相应的资源,均是受到防盗链系统的影响,那么究竟什么是防盗链系统呢?防盗链自然就是防范盗链,所以这里先说一下什么是盗链。
            盗链是指在自己的页面上展示一些并不在自己服务器上的内容。通常的做法是通过技术手段获得它人服务器上的资源地址,绕过别人的资源展示页面,直接在自己的页面上向最终用户提供此内容。比较常见的是一些小站盗用大站的资源(图片、音乐、视频、软件等),对于这些小站来说,通过盗链的方法可以减轻自己服务器的负担,因为真实的空间和流量均是来自别人的服务器。
            防盗链系统就是防范盗链的系统,防止别人通过一些技术手段绕过本站的资源展示页面,盗用本站的资源,让绕开本站资源展示页面的资源链接失效。实施防盗链系统后,因为屏蔽了那些盗链的间接资源请求,从而可以大大减轻服务器及带宽的压力,也正如此,越来越多的站点都开始实施防盗链技术。
            二、窥视防盗链
            现在大家应该知道了为什么有真实地址仍然不能下载,这就是防盗链的作用。凡事必有因果,为什么可以防盗链呢,其实现原理是什么?防盗链又是如何实现的呢?
            提到防盗链的实现原理就不得不从HTTP协议说起,在HTTP协议中,有一个表头字段叫referer,采用URL的格式来表示从哪儿链接到当前的网页或文件。换句话说,通过referer,网站可以检测目标网页访问的来源网页,如果是资源文件,则可以跟踪到显示它的网页地址。有了referer跟踪来源就好办了,这时就可以通过技术手段来进行处理,一旦检测到来源不是本站即进行阻止或者返回指定的页面。
    如果想对自己的网站进行防盗链保护,则需要针对不同的情况进行区别对待。如果网站服务器用的是apache,那么使用apache自带的Url Rewrite功能可以很轻松地防止各种盗链,其原理是检查refer,如果refer的信息来自其他网站则重定向到指定图片或网页上。
    .htaccess文件中加入下配置
    1. <span style="color:#009900;">#开启重写引擎  
    2. RewriteEngine on  
    3. #图片防盗链  
    4. RewriteCond %{HTTP_REFERER} !http://rewrite/.*  
    5. RewriteRule .*.(jpg|jpeg|png|gif)  daotu.jpg</span>  

            如果服务器使用的是IIS的话,则需要通过第三方插件来实现防盗链功能了,现在比较常用的一款产品叫做ISAPI_Rewrite,可以实现类似于apache的防盗链功能。另外对于论坛来说还可以使用“登录验证”的方法进行防盗链。
            三、以子之予攻子之盾,防盗链的破解
            尽管防盗链技术越来越成熟,破解相对来说难度较大,但在了解原理之后,大多都可以针对其防范的原理入手进行破解。
            对于图片防盗链,已经有人给出了详细的破解代码,对应的代码页面笔者已上传到笔者以前的个人博客空间中,在转发图片时,在图片地址前面加上“http://www.z7z8.com.cn/old/pic.asp?url=”地址即可解决图片防盗链问题。如果有自己的网站空间可以直接从http://www.z7z8.com.cn/old/pic.zip下载,解压后上传到自己的空间中,转贴时在图片地址前面加上“域名/路径/pic.asp?url=”即可。
    对于文件资源的防盗链,可以通过人为的加上引用页的方法来解决不能下载的问题,如获得http://www.z7z8.com.cn/old/pic.zip这一地址,下载时发现采用了防盗链技术,这时可以在新建下载任务时人为添加“引用页:”。因为绝大多数防盗链只是判断引用页是不是本站,所以这一方法可以突破防盗链进行下载,但不是所有情况下均有效。


    默认情况下,迅雷的新建任务对话框中是没有“引用页”项的,需要在迅雷中执行“工具→配置”,在打开的“配置面板”对话框中,在“任务默认属性”标签中,勾选“新建面板显示引用页”复选框即可。


    小提示:
            上面讨论的只是较初级的防盗链也破解,随着技术的日新月异,防盗链技术也飞速发展,因此现在的防盗链技术也要先进、复杂得多了。所以上面提到的破解方法并不一定针对所有的防盗链情况适用。


    参考自 http://windyli.blog.51cto.com/1300305/315283
  • 相关阅读:
    Iis发布网站
    call和apply的用法和区别
    用脚手架搭建vue项目
    记录一键shell脚本清理MySQL碎片文件的脚本
    Tiny File Manager – 轻便PHP文件管理工具 WEB文件可视化管理文件
    Pure Highlightjs – WordPress站长必装轻便代码高亮插件
    6个实用方法有效确保WordPress网站数据安全
    WPOSS – WordPress阿里云对象存储OSS插件 网站图片分离加速
    WordPress安装WPCOS插件分离图片至腾讯云对象存储加速网站
    Autoptimize – WordPress压缩代码加速网站访问插件设置方法
  • 原文地址:https://www.cnblogs.com/hehe520/p/6147474.html
Copyright © 2011-2022 走看看