
# 通过防盗链控制音视频的播放权限
#### 场景说明
为对分发的音视频进行播放权限控制，点播服务提供了防盗链功能。开启后，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]所示。
图1Key防盗链实现原理   
![](https://support.huaweicloud.com/bestpractice-vod/zh-cn_image_0192952726.png)
流程说明如下所示：
1. 租户在点播控制台开启Key防盗链功能，并配置误差允许时间、算法等。
2. 点播服务将配置的密钥值等下发到CDN节点中。
3. 租户通过点播服务获取到点播媒资的鉴权URL。
4. 观众通过租户提供的鉴权播放URL向CDN请求视频播放。
5. CDN根据播放URL中携带的鉴权信息校验请求的合法性，仅校验通过的请求会被允许。
 
#### 配置Referer防盗链
先配置Referer防盗链，限制请求来源，使点播资源得到最基本的安全保障。
![](https://support.huaweicloud.com/bestpractice-vod/public_sys-resources/note_3.0-zh-cn.png)
当前Referer防盗链配置不支持带端口。
1. 登录[视频点播控制台](https://console.huaweicloud.com/vod2/#/vod/home)。
2. 在左侧导航栏中，选择"域名管理"，进入域名管理界面。
3. 单击域名右侧"配置"，选择"防盗链配置"页签，如[图2]所示。
   
   图2防盗链配置   
   ![](https://support.huaweicloud.com/bestpractice-vod/zh-cn_image_0000002220625504.png)
   
   
4. 单击"Referer防盗链"右侧的"编辑"，弹出"Referer防盗链"对话框，如[图1 Referer防盗链配置信息]所示。
   
   配置Referer防盗链参数，如[表1]所示。
   图3Referer防盗链配置   
   ![](https://support.huaweicloud.com/bestpractice-vod/zh-cn_image_0186907848.png)
    表1参数说明 
   | 参数 | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   |:---|:---|
   | 开关 | 是否开启Referer防盗链，默认开启。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   | 类型 | 支持黑名单和白名单模式。 - Referer黑名单：表示黑名单内的域名不允许访问点播资源，其它可以访问。若同时勾选了"包含空Referer"，则表示不允许HTTP Header中Referer为空的请求。  - Referer白名单：表示白名单内的域名允许访问点播资源，其它不可以访问。若同时勾选了"包含空Referer"，则表示允许HTTP Header中Referer为空的请求。   |
   | 规则 | 黑名单或白名单中的域名。 支持输入域名或IP地址，以英文";"进行分隔，域名、IP地址可混合输入，支持泛域名添加。输入的域名、IP地址总数不能超过100个。 示例如下： ``` www.example.com;*.test.com;192.168.0.0 ```                                                                                                                                                                                     |
      
   
   
5. 配置完成后，单击"确定"。 
   大约需要3-5分钟，Referer防盗链才生效。
   
   
 
#### 配置Key防盗链
为点播资源配置Key防盗链，通过鉴权URL的时效性来进一步加强点播资源的安全。
1. 登录[视频点播控制台](https://console.huaweicloud.com/vod2/#/vod/home)。
2. 在左侧导航栏中，选择"域名管理"，进入域名管理界面。
3. 单击域名右侧"配置"，选择"防盗链配置"页签，如[图4]所示。
   
   图4防盗链配置   
   ![](https://support.huaweicloud.com/bestpractice-vod/zh-cn_image_0000002220625504.png)
   
   
4. 单击"Key防盗链"右侧的"编辑"，弹出"Key防盗链"对话框，如[图5]所示。
   
   开启防盗链开关后的参数说明如[表2]所示。
   图5配置Key防盗链   
   ![](https://support.huaweicloud.com/bestpractice-vod/zh-cn_image_0000002489245196.png)
    表2参数说明 
   | 参数        | 描述说明                                                                                                                                                                                                                                       |
   |:---|:---|
   | 密钥值       | 即Key值，单击"生成"，可自动生成符合格式的密钥值。                                                                                                                                                                                                                |
   | 误差允许时间    | 表示当前防盗链有效时间，默认为120分钟。 示例：若鉴权URL生成时间为1573806090（2019/11/15 16:21:30），配置的"误差允许时间"为120分钟，则鉴权URL的失效时间为2019/11/15 18:21:30。                                                                                       |
   | 旧key的失效时间 | 采用新Key时，旧Key值的失效时间，从新Key生效时开始计算，默认60分钟后失效。 示例：若新Key生效时间为2019/11/15 16:21:30，配置的"旧Key的失效时间"为60分钟，则旧鉴权URL的真正失效时间为2019/11/15 17:21:30。                                                                           |
   | 算法        | 加密算法，支持ABCDE四种算法。选择算法不同，生成的鉴权URL不同，具体生成规则可参考[Key防盗链](https://support.huaweicloud.com/usermanual-vod/vod010014.html)。 说明： 算法ABC暂不支持HLS和DASH播放场景，建议使用算法D或算法E。 |
      
   
   
5. 单击"确定"，完成参数配置。
6. 若您选择使用算法D，则参数配置完成后还需要[提交工单](https://console.huaweicloud.com/ticket/#/ticketindex/createIndex)申请审核，提交的信息需包含配置的域名，及[表2]中的信息。
   
   审核通过后Key防盗链功能才会生效。若后续修改了此Key防盗链的配置，也需重新[提交工单](https://console.huaweicloud.com/ticket/#/ticketindex/createIndex)审核。
   
   
 
#### 验证防盗链功能
- 验证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防盗链
  1. 登录[视频点播控制台](https://console.huaweicloud.com/vod2/#/vod/home)。
  
  2. 在左侧导航树中，选择"媒资管理 \> 音视频管理"。
  
  3. 在某个音视频行单击"管理"，选择"播放地址"页签，获取播放地址。
     图6播放地址   
     ![](https://support.huaweicloud.com/bestpractice-vod/zh-cn_image_0215739329.png)
     其中"地址"列为原始播放地址，单击![](https://support.huaweicloud.com/bestpractice-vod/zh-cn_image_0192889341.png)可获取鉴权播放地址。
     
  
  4. 在播放器端分别播放原始播放地址和鉴权播放地址，若原始播放地址播放失败，鉴权播放地址播放成功，则表示Key防盗链生效。
   
 
