防盗链说明
背景
视频盗链的问题经常发生,最近新闻报道经常看到某公司告某公司盗用其网站视频链接。所谓视频盗链就是没有经过获得播放权平台的授权,直接通过某种技术手段,在自己网站上直接播放,这种方式对版权平台造成了服务器负荷增大,同时造成收益损失。
防盗链,其本质就是用户对自己的资源设置的访问限制,控制”谁”可以在”什么时间”访问到”什么资源”。不做防盗链,用户的许多资源都为其他人做了嫁衣,也会给自己的服务器增加不必要的访问压力和带宽消耗。
防盗链列表
| 序号 | 防盗链 |
|---|---|
| 1 | IP黑白名单 |
| 2 | Referer白名单 |
| 3 | UA白名单 |
| 4 | Token加密串 |
| 5 | swf文件防盗链 |
防盗链详解
IP黑白名单
概念
针对客户端IP进行校验,在服务器上设置黑/白名单,只阻止/允许某些IP访问资源,一般都是IP黑名单的形式。
适用于直播协议
http、rtmp
功能描述
- 直播推流:服务器设置 IP 白名单,允许符合白名单中 IP 地址的服务器推送直播流。
- 播放:服务器设置 IP 黑名单,阻止符合黑名单中 IP 地址的用户观看。 (PS:也可以按照客户需求配置IP白名单,只允许符合白名单中IP地址的用户观看。)
Referer白名单
概念
最常用的防盗链手段,通过对HTTP请求中的referer header进行判断,以决定用户是否可以访问该资源。一般都是referer白名单的形式。
适用于直播协议
http、rtmp
功能描述
客户提供给我们一些信任的网站,除了这些网站的其他站点都不允许引用客户网站的特定内容,相当于提供允许访问的白名单。
对于被禁止的访问,处理方法如下:
1)若为 http 访问,返回403状态码
2)若为rtmp访问,直接断开链接。
特别说明
- 若为 http 访问:referer 防盗链可以支持多个域名的形式,但域名必须是具体的,不能是泛域名,长度无限制,例如:
ent.cankaoxiaoxi.com
2.若为 rtmp 访问:referer防盗链支持单个域名和泛域名的形式,长度无限制,例如
ent.cankaoxiaoxi.com
*.cankaoxiaoxi.com
3.空 Referer
- 若为 http 访问:禁止空 referer,不允许用户直接访问该资源。
例如:
若用户直接在浏览器地址栏中输入一个资源的URL发起请求,该请求是不包含referer字段的(空referer),<br>
则该请求会被拒绝,返回 403 状态码。
- 若为 rtmp 访问:可以支持空 referer,即可以允许用户直接访问该资源。
例如:
若用户在客户端直接发起访问,有可能是空 referer,这种情况下,客户是允许用户直接访问该资源的。
UA白名单
概念
HTTP 请求 header 中的 User Agent 字段,是一段浏览器或者设备标识自己的字符串。对于网站主来说,有时需要让一些资源只能在某些浏览器或者设备上才能访问。
适用于直播协议
http
功能描述
UA 防盗链通常用在手机 APP 或者一些可自定义 User Agent 的应用,比如播放器。设置 UA 白名单,只支持字符串完整校验,不支持正则匹配。
Token加密串
概念
Token 防盗链是功能最强的一种防盗链方式,开启防盗链后,每个文件的访问必须带上特定的 token 才能访问,并且可以设定每个 token 的有效时间。
token 一般会在请求参数中,没有带 token 的外链,或者超过了有效期的token 链接都会返
回 403,达到防盗链的目的。
适用于直播协议
http、rtmp
功能描述
Token 加密串,是通过资源 URL、密钥、过期时间生成的一个加密字符串。外链必须要带上这个 Token 才能在规定时间内访问到该资源。
token 防盗链的生成方式如下:
-
双方提前约定公共密钥;
-
根据设定规则,从访问链接中获取对应关键字,根据加密算法进行加密校验。
swf 文件防盗链
概念 SWF文件即swf,是Macromedia公司的动画设计软件Flash的专用格式,是一种支持矢量和点阵图形的动画文件格式,被广泛应用于网页设计,动画制作等领域,swf文件通常也被称为Flash文件。 Adobe Flash Player 本身具有安全机制,Adobe公司基于rtmp协议做了防盗链。
适用于直播协议
rtmp
功能描述
播放器遵循协议,将 swf 文件信息通过握手包传送给服务器。服务器根据本地存放的 swf 遵照协议,验证访问合法性。若访问不合法,则拒绝访问;若访问合法,则返回信息。