English
 电子信箱
 加入收藏

  威盾防火墙 >> 新闻中心 >> 业界动态 >> CMP防盗链的相关讨论

 

CMP防盗链的相关讨论

威盾防火墙 2015-01-06

 
今天讨论一下有关CMP里的防盗链,大家有什么好建议也可以回复讨论

需要防盗链的,一般是音乐存放在自己的服务器
如果被盗链太多,不但影响网站正常运行甚至会导致服务器挂掉,同时还要白白支付高额的流量费用

那么怎样在CMP实施防盗链呢?

CMP是个flash,和浏览器一样,一般使用的是http协议来加载音乐文件(flash还支持rtmp)
所以可以直接使用传统的防盗链软件来加防,但这些软件一般都要购买
也可以自己编写程序做代理,用自己的策略加防,这样可以免费,效果也不错

我们做任何事,都要根据实际情况出发,逐一应对
就像某些人一用网页框架就拿不利于SEO说事一样,肯定是错误的
防盗链也一样,我们到底要防谁,怎么防,都要弄明白,分清楚孰轻孰重

其实盗与防盗,就如同加密与解密一样,是矛盾的两面,都是无法做到绝对的

道高一尺,魔高一丈

所以通常我们说的防盗链,其实主要是这两点:

1,尽量完全的杜绝搜索引擎盗取,比如迅雷,百度等流
这是防盗链最重要的一点,因为一旦被这些引擎发现,那就相当于全天下的人都有可能连接到你的服务器

2,尽量多的阻止恶意盗链,比如某些技术狂热分子或黑客,职业盗链者,同行竞争性小偷站等
这些盗链者一般都有技术跟踪你的所有防盗策略,然后完全模拟出一个有效的环境,进而突破防盗
因此完全阻止是不现实的,只能增加他们的xx难度,让其付出更多的代价,比如使用时间限制,不断变换策略等

防盗误区a:把原始音乐链接地址混淆或加密,甚至隐藏到代码中,最后在页面再用JS等方法解码出来

表面上能防住机器人在页面直接抓取和识别,其实很多浏览器都安装有XX工具栏,它时时刻刻都在监控着你浏览器的请求,被发现一次就够了
同时也只能防住一部分不懂的人,因为你音乐总是要下载到客户端才能听,保存出来还不容易么,比如去浏览器缓存找,用工具抓包等

防盗误区b:仅用http协议header请求头的referer来源地址来做限制

比如:从a请求到b,那么b可以从referer得到请求是从a来,从而判断它可以限制其他地方请求
显然这是一种最简单的策略,但有几个问题:

首先,referer可以随意伪造,不说用专门的组件,一般就随便用一种服务端程序语言,即可轻松实现referer自定义封装再请求,所以referer是不可信的
其次,referer不是每次请求都发送,比如在IE会每次都发送,但Firefox就不一定发送,使用WMP也是没有referer的,尤其IE市场份额越来越少,我们也要考虑,甚至以后的手机端发不发也不一定

所以,我们一般对referer的判断策略都是:有且不符合才判断无效,其他情况都继续
这就是为什么很多时候,使用WMP或Firefox能播放,但IE中不能播放的原因

怎样才是一个比较有效的防盗链方法?
这里提供一个思路,具体代码可以自行实现,如果不懂自然也难以驾驭自己的音乐站,可以略过

1,第一层使用referer进行“有且不符合”判断,发挥referer余热,毕竟速度快
2,第二层使用token机制进行验证

token就是一个验证码,我们一般用MD5之类的散列计算来生成token,长度固定,且具有唯一标识性和不能反编译性
这样我们可以通过一定的规则和方法去生成这个值,最后验证这个值的正确与否即可,一般步骤:

一,生成token,几种方法:
1,根据音乐ID+服务端时间+客户端IP生成,可以自己组合混淆,其中服务端时间可以做过期验证
2,根据音乐ID+某个秘密key值生成,这个key可以放到flash里面
比如放到CMP的插件里,然后加密这个flash使其不能被看到,同时还不定期更换这个key即可

二,传递token,几种途径:
1,通过URL查询参数,这是最通用兼容性最好的方式:
  1. http://mydomain.com/src_handler.php?id=1&token=6f90e75e930389b52a3cf1d4febd1d82
复制代码
如果做一些rewrite可以有很好的可读性:
  1. http://mydomain.com/6f90e75e930389b52a3cf1d4febd1d82/1.mp3
复制代码
2,通过cookies传递,相对比较安全,设置生成的token到cookies,每次http请求都会附送当前域cookies
但客户端浏览器必须支持cookies,因为有的时候cookies可以被禁用或者清除

三,验证token:
根据你之前生成token的方法,也生成另一个token,然后与传递过来的token进行比较即可

由此可见token的成败就取决于这些规则和方法的保密性
所以我们需要对每个token要有时间限制,比如一个小时后就自动失效
同时还要不定期更换token的生成规则,即使被xx了,更换后又得花时间去xx
这样才能维持你的防盗链机制处于一个相对安全的级别

所以如果是自己的站,加防的具体规则和方法请不要公开
如果是开发应用系统并公开提供下载的,可以提供多重方案供用户选择,或者让用户可以自定义

只要把握好离资源最近的一关,也就是最后的音乐请求关口,基本能实现绝大部分的防盗链,有效性也是最强的
那些去加密CMP配置,加密CMP列表,甚至改文件名后缀隐藏列表之类的,都是浮云

相关内容: 最新内容:
图片服务的防盗链问题[2015-01-06]
防盗链技术终极解决方案[2015-01-06]
Apache带宽限制和防盗链设置方法[2015-01-06]
1.5.3 防盗链配置实例[2015-01-06]
阿里云OSS 防盗链[2015-01-06]
浅谈如何通过.htaccess设置图片文件防盗链[2015-01-06]
图片服务的防盗链问题[2015-01-06]
防盗链技术终极解决方案[2015-01-06]
Apache带宽限制和防盗链设置方法[2015-01-06]
从城管网站遭恶搞看网站如何防止黑客攻击[2015-01-06]
关于win 2003系统的一些常见问题的解答[2015-01-06]
让Win8显示全部文件路径的策略[2015-01-06]