开发直播系统中应用防盗链的作用

2020-10-21| |来自: 互联网

PM:徐文—\/ : OrangeAndLemonCream

随着音视频技术的飞速发展,直播已成为当下最为炙手可热的技术。然而如何保障资源不被盗用,如何防止用户非法接入,对于直播平台至关重要。本文简要介绍了当下主流的几种防盗链,并对其机制进行了详细的分析,对直播平台的安全建设具有一定的参考价值。

什么叫防盗链

说白了防盗链就是说这种加了防盗链签字的URL,而经过签名的URL能跟网络服务器的安全性体制相辅,进而将URL的应用管理权限限定在客户的APP,与此同时第三方平台即便取得URL也没法开展再次应用和散播。即选用服务端程序编写,根据URL过虑技术性保持的避免盗链的手机软件。

何时必须提升防盗链

(1)推流

推流全过程中必须提升防盗链,由于客户的直播间码ID非常容易被第三方平台故意进攻,特别是在是直播间码和客户ID关联时,因此必须为推流URL提升防盗链签字,进而保证只能客户自己能够在登陆后获得防盗链签字。

(2)播发

播发时加上防盗链并不是极为重要,适用网络直播平台的热点视频资源或是网络直播平台特有的视频新项目,为了防止竞争者盗取播放地址后在别的APP端发布一样的视频内容。但是播放地址防盗链引入后的副作用就是在播放时可能会需要申请防盗链签名,非常容易造成直播间的开启速率不平稳。

防盗链的类型

(1)Refer防盗链:检查用户的来源于网址。即客户能够将非特定网页页面添加refer信用黑名单,限定非特定网页访问网络服务器,避免内容盗链。

(2)Token防盗链:客户在推流和播发时务必随身携带token数据加密串,直播系统会校检合理合法,只能合理合法的 token 数据加密串能够根据校检开展恳求,非法请求将会被回绝。

不加上防盗链会产生哪些

现阶段直播间早已渗入了各个领域,而防盗链体制也愈发的关键。举个简易的事例,如今市面有许多直播间教育系统,教师根据直播间即时讲课时,一般都是留有回看视频供大学生客户收看。如果不是防盗链体制,那么视频未历经受权,就会被第三方平台故意窃取视频。与此同时就会导致专业知识资源的这种故意散播,针对教师而言都是挺大的损害。一般直播的内容,绝大多数全是历经客户资金投入了很多的活力和艺术创意的,如果被第三方故意窃取,对直播间业务流程的伤害还是挺大的。

目前,业内主流防盗链的实现方式主要有以下几种:

防盗链名称

规则简介

IP防盗链

按照IP地址黑白名单来控制访问者的范围。

Referer防盗链

利用http请求头的Referer字段来防止资源被其他站点非法引用。

User-Agent防盗链

只允许特定的浏览器或专属客户端进行访问

回源鉴权防盗链

利用动态令牌对访问资源的请求进行回源鉴权,从而保证资源不被未授权用户盗用。

时间戳防盗链

基于MD5加密的时间戳对资源的可访问时间进行限制。

其中IP防盗链、Referer防盗链、User-Agent防盗链主要是利用普通客户端请求中所携带的一些关键信息来进行验证,其配置规则和实现原理都比较简单,由于这些关键信息都可能会被伪造,因此其可靠性较低。时间戳防盗链是基于加密时间戳来实现的,其资源访问具有时效性,可靠性相对较高,且比较容易与CDN结合,是目前使用最为广泛的防盗链技术。回源鉴权防盗链基于动态令牌来限制资源的访问,具有很强的实时性,最为安全,但实现相对复杂,且对服务器性能具有较高要求。下面我们将对各防盗链原理进行探究。

IP防盗链

IP防盗链是基于访问者IP地址进行访问限制的一种防盗链实现。由于在用户发起请求时,服务端可获取到客户端的IP地址。基于预先设定好的IP地址黑白名单,服务端将对客户端的IP进行过滤,在允许范围内的客户端可成功访问资源,而黑名单中的客户端将无法获取到资源,从而达到防盗的效果。其主要应用于一些有限范围IP的访问控制,如公司内部员工的使用,某个区域的用户使用等。

Referer防盗链

HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器该网页是从哪个页面链接过来的,服务器因此可以获得一些信息用于处理。如图所示,其Referer为www.baidu.com。因此可通过检查请求中的Referer信息,来对资源的请求进行控制,防止资源被其他网站恶意引用。其主要用于图片等一些静态资源的防盗控制,但由于其较易被伪造,因此安全性不高。

User-Agent防盗链

User Agent是用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。通过对客户端的User Agent进行过滤,可以限制访问资源的类型。同样,与Referer类似,由于User-Agent很容易伪造,因此其防盗链安全性也较低。

回源鉴权防盗链

回源鉴权防盗链是一种实时性、安全性很高的防盗链机制。当客户端请求资源服务器资源时,资源服务器会将收到的请求按照一定规则转发至业务服务器进行验证,如果验证通过则认为是合法请求,否则将拒绝本次资源请求。由于每次资源请求都需要回源到业务服务器进行鉴权,因此会增大系统的复杂度,增加客户端访问资源的等待时间,且会对业务服务器带来较大的压力。其过程大致如下图所示:

时间戳防盗链

时间戳防盗链是基于加密时间戳的一种防盗链,其每一个请求的url都具有一定的有效时间,当超过有效时间后,请求所对应的资源将无法继续被访问,因此它是一种相对安全可靠的防盗链机制。时间戳防盗链的url本身由于既要包含过期时间等相关信息,还要保证过期时间不被篡改,因此通常采用MD5算法对secret、过期时间expire、文件路径path等信息进行加密得到签名并加入url中,并在验证端(通常是CDN)进行验证。其整个过程通常分为以下几个步骤:

  1. 客户端发送原始资源请求给业务服务器。
  2. 业务服务器根据约定的算法计算防盗链签名sign,如sign = md5(secret + path + expire)。
  3. 业务服务器将带有防盗链签名、过期时间等信息的url返回至客户端。
  4. 客户端使用带有时间戳签名的url请求对应的资源。
  5. 资源方从url中获取相应信息,首先校验过期时间,若未过期则按照约定算法计算签名并与url中的sign进行比对,若一致才认为是有效请求。以上两点若存在一点不满足的情况,则认为是无效请求。

如下图,我们给出七牛云官方时间戳防盗链的生成,其最终访问url为:

http://xxx.yyy.com/DIR1/%E4%B8%AD%E6%96%87/vodfile.mp4?v=1.2&sign=b4b7f94dd7817ce0283b5491861c3936&t=55bb9b80

在资源方接收到请求时,会先校验过期时间55bb9b80,若当前时间不晚于20150801 00:00:00,则计算下值:

md5(9388f4ba63b89bba5b9b84aa70a92eaac099d39b/DIR1/%E4%B8%AD%E6%96%87/vodfile.mp455bb9b80) .to_lower(),若其值等同于b4b7f94dd7817ce0283b5491861c3936,则验证通过并返回相应的资源,否则将禁止客户端的访问。

产品顾问:徐文—\/ : OrangeAndLemonCream


标签: 防盗 资源 时间 服务器 客户 直播间 客户端 因此 Referer 过期
出处: https://www.toutiao.com/a6885639025219076620/

推荐

文明发言,请先登录

文明上网理性发言,请遵守国家法律法规。

最新评论

©2003- 黑基网 黑名单存档手机版网站地图免责条款法律声明隐私保护