直播平台防盗链探究

news/2024/12/12 5:35:11/

作者 | 张高旭 中国农业银行研发工程师

曾婷婷 中国农业银行研发工程师

责编 | Carol

封图 | CSDN 付费下载自视觉中国

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

为什么要有防盗链

当前国内直播平台百家争鸣,既有提供直播云服务的七牛云直播,腾讯云直播,也有提供应用的斗鱼直播,抖音直播。我们也基于开源直播框架搭建了一套直播平台,并实现了直播的一些功能。然而随着功能的不断完善,应用的不断扩大,也面临着如何保证私有资源不被别人窃取的问题。试想一下,如果教育网站的视频被人随意引用,这些作者的辛苦付出将付之东流;如果公司的直播服务被人随意接入,公司经营者将会遭受巨大的损失。由此防盗链技术应运而生,它能最大限度的防止资源被未授权的人轻易盗用,从而保障我们的利益不被侵犯。

主流防盗链介绍

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

防盗链名称

规则简介

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,则验证通过并返回相应的资源,否则将禁止客户端的访问。

总结

文章介绍了当前主流的几种直播平台防盗链技术,并详细阐述了其工作机制,为直播平台的安全性建设提供了参考。此外,这些防盗链技术并非是只能单一使用,而是可以根据业务需求进行评估,从中选择几种结合使用,从而最大限度的保护资源不被恶意的盗用。

比如在直播业务中,推流主播端所需安全性较高,而数量通常较少;拉流观众端人数较多,但安全要求不高。因此可采用回源与时间戳结合的方式,在直播推流时采用回源方式,确保推流的安全可靠,而在拉流端采用时间戳的方式,保证直播流不会被未经授权的人随意获取到,且对于业务服务端并不会带来更大的压力,从而满足业务的各项需求。

作者简介:

张高旭,研发工程师,就职于中国农业银行研发中心,从事即时通讯等领域研发工作; 

曾婷婷,研发工程师,就职于中国农业银行研发中心,从事即时通讯等领域研发工作;

推荐阅读
  • 云交易所已成资金盘、杀猪盘重灾区,曾被寄予厚望,如今罪恶丛生

  • 虚拟货币的“毒”谁来清?枪弹还是代码 ?

  • 七夕恋爱指南:理性算计与不可篡改的爱

  • MIT 更新最大自然灾害图像数据集,囊括 19 种灾害事件

  • 闲鱼的云原生故事:靠什么支撑起万亿的交易规模?


http://www.ppmy.cn/news/685923.html

相关文章

直播平台源码搭建教程直播原理与web直播实战

文章结构 直播构成直播流程web中直播技术 HLS协议RTMP协议HLS与RTMP对比直播实战 安装nginx、nginx-rtmp-module、FFmpeg(以下操作均在mac下进行)nginx.conf配置文件,配置RTMP、HLS重启nginx查看端口是否启动FFmpeg执行命令代码效果直播中遇…

短视频直播怎么搭建_直播平台搭建流程

2020年,短视频和直播是非常火的,也是非常热闹的。短视频直播电商的时代来临了,那么如何搭建端视频直播平台呢,一般都有哪些流程。如果我们从事互联网创业,而不能和视频直播结合,那么两三年之后,…

爬虫-某直播平台图片批量爬取url并下载

后续技术类文档更新到微信公众号-------->>喜欢的扫码关注 import json import time import requests from selenium import webdriverclass HuYa(object):def __init__(self):self.start_url "https://www.hxyx.com/l"#某直播平台的url地址"x"为缺…

多平台聚合直播PHP源码

介绍: 多平台聚合直播php源码,无需数据库,直接上传就可以使用。 自适应手机、电脑端端,做了分类直播选择列表,增加搜索主播功能。 自动更新采集直播平台;战旗、斗鱼、虎牙、龙珠、全民、龙珠直播。 提示;空间PHP版本请…

基于Web的直播平台架构设计

时常有人问起:“网络直播与视频会议有什么区别?”。直播平台确实有很多,多得让人眼花缭乱。从功能上来讲,感觉都差不多,你有的我也有。它们的区别不在于功能上哪个更强,而是在于它们的“应用场景”上的区别…

详细直播平台开发细节,提供成品直播系统源码

直播的火爆从2016年一直烧到了2018年,直播平台开发的技术——直播APP源码也渐渐浮出水面,在直播大火的现在,您是不是也想要一款独属于自己的直播平台呢?小编今天为您讲解一款简易直播平台开发细节。 一.前端推流 1.推流可以采用…

自建直播平台和流媒体服务器

一、前期准备 1、准备一台服务器windows或linux都可以 2、下载对应操作系统酷导流媒体,下载地址:http://live.cooldao.com/downloads.html 二、安装流媒体软件 windows下点击安装包即可,linux下在解压包目录执行cooldao install 三、系统配置及使用 默…

直播软件自动化测试,基于SRS-Bench工具的直播平台性能测试

摘要:性能测试通过自动化的测试工具模拟正常、异常场景来对系统的各项性能指标进行测试。通过性能测试可以分析一个系统能力、瓶颈、关键问题等。本文结合直播平台的部分场景,使用开源SRS-Bench工具对直播并的4个场景进行压力测试,测试直播平台的基础能力。 一 性能测评工具…