English
 电子信箱
 加入收藏

  威盾防火墙 >> 新闻中心 >> 业界动态 >> 防盗链技术终极解决方案

 

防盗链技术终极解决方案

威盾防火墙 2015-01-06

 
防盗链技术现状:
    1、通过识别Referer确认请求来源页面
    2、Apache,squid等都能对Referer进行识别
    3、通过ActiveX显示的内容不向服务器提供Referer Header(例如,Flash,WindowsMedia视频等)
    4、流媒体的RTSP协议也不向服务器提供Referer Header
    5、通过服务器端程序代码实现
 
防盗链应用现状:
    1、对图片、HTML等可以实现防盗链
    2、无法对Flash,WindowsMedia视频(MMS,RTSP)实现防盗链
    3、服务器端程序代码实现的防盗链无法通过CDN加速
 
对于Flash,WindowsMedia视频这种占用流量较大的服务无法实现防盗链,对一个依靠这类内容作为盈利点的网站来说是非常头疼的,俺通过一些研究以及测试实现了采用Cookie技术的防盗链解决方案,完美的解决了对Flash,WindowsMedia视频的防盗链。
 
首先发现虽然ActiveX插件不传递Referer,但是却忠实的传递Cookie。于是在显示ActiveX的页面的<head> </head>标签内嵌入一段代码:
<script> document.cookie="Cache=vod;domain=domain.com;path=/"; </script>
 
这段代码用 javascript 设置了一段 Cookie: Cache=vod
 
然后通过各种ACL来判断这个Cookie的存在以及验证其值的操作了
 
Squid:
    建立脚本 /usr/local/squid/libexec/squid_cookie.pl
-----------
#!/usr/bin/perl -w
# programmed by oknet http://blog.sina.com.cn/m/oknet
# 这个脚本仅仅是验证了Cache这个cookie的存在,没有严格的校验其值。
# This is the cookie to check for. 
$COOKIE="Cache="; 
# disable output buffering 
$|=1; 
# cookie matches? 
while (<STDIN>) { 
         chop; 
         $cookie=$_; 
         if( $cookie =~ /$COOKIE/i) { 
                 print "OK\n"; 
         } else { print "ERR\n"; } 
}
-----------
    然后在squid.conf添加:
external_acl_type download children=15 %{Cookie} /usr/local/squid/libexec/squid_cookie.pl
acl dl external download
    然后选择需要进行防盗链的文件类型:
acl filetype url_regex -i \.wmv
acl filetype url_regex -i \.wma
acl filetype url_regex -i \.asf
acl filetype url_regex -i \.asx
acl filetype url_regex -i \.avi
acl filetype url_regex -i \.mp3
acl filetype url_regex -i \.smi
acl filetype url_regex -i \.rm
acl filetype url_regex -i \.ram
acl filetype url_regex -i \.rmvb
acl filetype url_regex -i \.swf
acl filetype url_regex -i \.mpg
acl filetype url_regex -i \.mpeg
acl filetype url_regex -i \.mov
acl filetype url_regex -i \.zip
acl filetype url_regex -i \.mid
    如果仅仅只是禁止用户访问的话,就没意思了,要让盗链者帮我们宣传我们的网站,特别是发现盗链比较多的时候,这个时候,可以让任何盗链的网站帮我们免费宣传~~~那就是把盗链的url重定向到我们的网站宣传页~~
    建立脚本:/usr/local/squid/libexec/squid_redir.pl
--------------------------
#!/usr/bin/perl -T -w
#
# rredir.pl
#
# Author: Peter Eisenhauer <[email protected]>
# First Version: 26. May 1997
# Modified by oknet http://blog.sina.com.cn/m/oknet
#
# Description: Direct all request to files who are in a local dir to
# this directory
# 
use File::Basename;
use URI::URL;
# flush after every print
$| = 1;
# Process lines of the form 'URL ip-address/fqdn ident method'
# See release notes of Squid 1.1 for details
while ( <> ) {
    $r302=0;
    ($url, $addr, $fqdn, $ident, $method) = m:(\S*) (\S*)/(\S*) (\S*) (\S*):;
    $url = url $url;
    $host = lc($url->host);
    if ( $host !~ /\./ ) {
        next;
    }
    if ( $host =~ /vod\.domain\.com/ ) {
        $url->path("/ad.wmv");
        $r302=1;
    }
} continue {
    if ( $r302 ) {
        print "302:$url\n";
    } else {
        print "$url $addr/$fqdn $ident $method\n";
    }
}
--------------------------
    然后在squid.conf添加:
redirect_program /usr/local/squid/libexec/squid_redir.pl
redirect_children 5
acl superurl url_regex -i ^http://vod\.domain\.com/tom\.wmv$
redirector_access deny superurl
redirector_access allow filetype !dl
redirector_access deny all
    设置superurl是因为宣传我们自己站点的视频是不做防盗链的,这样才能起到宣传的作用。现在大功告成啦!网站的流量大幅增加~~~PV是原来的三倍,Oh,Yeah~
 
    WMS视频的MMS协议由于不是明文,无法实现防盗链,但是RTSP协议基本就是HTTP协议的变种,可以在BIGIP等可以进行Layer 7处理数据的设备上实现对Cookie的校验。但是WMS视频防盗链要禁止MMS协议,因为MMS协议不是明文,无法进行cookies的识别。但是可以在HTTP,RTSP上进行识别,WMS V9都是支持HTTP,RTSP的。下面是用于BIGIP的防盗链iRule:
--------------------------
if (http_uri matches_regex "vod.domain.com") {
   if (http_cookie("Cache") == "vod") {
      use pool vod-rtsp
   }
   else {
      discard
   }
}
else {
   use pool vod-rtsp
}
--------------------------
    其他的系统可以参考以上的规则。
    采用Cookie的防盗链方式对于大多数的系统都可以轻易实现,Cookie一般都是用来传递认证信息,相信不会出现不传递的状况。

相关内容: 最新内容:
Apache带宽限制和防盗链设置方法[2015-01-06]
1.5.3 防盗链配置实例[2015-01-06]
阿里云OSS 防盗链[2015-01-06]
浅谈如何通过.htaccess设置图片文件防盗链[2015-01-06]
教你如何用ISAPI_Rewrite做IIS防盗链[2015-01-06]
IIS图片防盗链和下载的解决方案[2015-01-04]
Apache带宽限制和防盗链设置方法[2015-01-06]
从城管网站遭恶搞看网站如何防止黑客攻击[2015-01-06]
关于win 2003系统的一些常见问题的解答[2015-01-06]
让Win8显示全部文件路径的策略[2015-01-06]
让window7跑的更快 丢掉肥肉快速瘦身[2015-01-06]
防止SSL劫持的终极方法[2015-01-06]