华为云视频点播服务为对分发的音视频进行播放权限控制,提供了防盗链功能。开启后,CDN会对所有播放请求中携带的关键信息进行校验,仅校验通过的请求会予以响应,其它非法的访问将直接返回403。防盗链方案中包含Referer防盗链和Key防盗链。
Referer防盗链是基于HTTP协议支持的Referer机制实现的,通过播放请求中携带的Referer字段识别请求来源。配置黑名单或白名单,CDN将根据名单对请求来源进行过滤,从而达到最基本的访问控制的目的。Referer防盗链具有配置便捷,无需额外开发,快速生效等优势,适用于音视频主要在web端引用的场景。
由于HTTP Header的内容可伪造,Referer防盗链只能达到最基本的保护,安全性不高。所以还可以采用Key防盗链方案,通过鉴权播放URL保障点播资源的安全。由于鉴权的Key值具有时效性,所以适用于对媒资安全要求比较高的场景。
本示例中,开启Referer防盗链,只允许白名单中的域名访问视频文件,然后通过Key防盗链生成鉴权播放地址。
实现原理
Referer防盗链的实现原理比较简单,在点播控制台配置了白名单或黑名单后,点播服务会将这份名单分发到CDN中。当CDN接收到资源请求时,会根据这个名单来识别请求是否合法,若合法,则访问请求的资源,否则拒绝并返回403。
Key防盗链是视频点播的加速节点与点播源站联合实现的,比Referer防盗链更为安全可靠的一种防盗播方案。Key防盗链的实现过程如图1所示。
图1 Key防盗链实现原理
流程说明如下所示:
- 租户在点播控制台开启Key防盗链功能,并配置误差允许时间、算法等。
- 点播服务将配置的密钥值等下发到CDN节点中。
- 租户通过点播服务获取到点播媒资的鉴权URL。
- 观众通过租户提供的鉴权播放URL向CDN请求视频播放。
- CDN根据播放URL中携带的鉴权信息校验请求的合法性,仅校验通过的请求会被允许。
配置Referer防盗链
先配置Referer防盗链,限制请求来源,使点播资源得到最基本的安全保障。
- 登录视频点播控制台。
- 在左侧导航栏选择“域名管理”,进入域名管理界面。
- 单击域名右侧“配置 ”,在“防盗链”页签单击“Referer防盗链”。
- 在弹出的配置框中打开“开关”,并配置相关参数。
- 类型:支持黑名单和白名单模式。
- Referer黑名单:表示仅名单内的域名不允许访问点播资源,其它可以访问。若同时勾选了“包含空Referer”,则表示不允许HTTP Header中Referer为空的请求。
- Referer白名单:表示仅名单内的域名允许访问点播资源,其它不可以访问。若同时勾选了“包含空Referer”,则表示允许HTTP Header中Referer为空的请求。
- 规则:名单详情,最多支持100条,每一行一条记录,或者以英文“;”分隔。域名前不能带协议名(http://和https://)。
示例:填写了“www.example01.com”,则“www.example01.com/123”和“www.example01.com.cn”也会匹配成功。
- 单击“确定”,完成配置。
Referer防盗链生效预计需要3~5分钟。
配置Key防盗链
为点播资源配置Key防盗链,通过鉴权URL的时效性来进一步加强点播资源的安全。
- 登录视频点播控制台。
- 在左侧导航栏选择“域名管理”,进入域名管理界面。
- 单击域名右侧“配置 ”,在“防盗链”页签选择“Key防盗链”。
- 在弹出的配置框中打开“防盗链开关”,并配置相关参数。
审核通过后Key防盗链功能才会生效。若修改了Key防盗链的配置,也需重新提交工单审核。
验证防盗链功能
- 验证Referer防盗链
在Referer防盗链中配置的referer白名单为“www.huaweicloud.com”,且不勾选“不包含空Referer”。在“http://www.example.com/test/test.html”网页中引用点播服务中的视频文件“https://1280.cdn-vod.huaweicloud.com/input/1.mp4”,访问该网页并播放视频,若播放失败则表示Referer防盗链生效。
- 验证Key防盗链
- 登录视频点播控制台,在左侧导航树中选择“音视频管理”。
- 在某个音视频行单击“管理”,选择“播放地址”页签,获取播放地址。
其中“地址”列为原始播放地址,单击可获取鉴权播放地址。
- 在web播放器端分别播放原始播放地址和鉴权播放地址,若原始播放地址播放失败,鉴权播放地址播放成功,则表示Key防盗链生效。
828企业上云节,意想不到的优惠,匹配充满机遇的业务场景。
点击链接前往活动会场: https://activity.huaweicloud.com/828_enterprise_promotion/index.html