阿里云 Aliplayer高级功能介绍(八):安全播放

基本介绍

如何保障视频内容的安全,不被盗链、非法下载和传播,阿里云视频点播已经有一套完善的机制保障视频的安全播放:javascript

75cb1b9ab482c09cc2fbb9b5522e45d32e9d1975

更多详细内容查看点播内容安全播放,H5的Aliplayer对于上面的安全机制都是支持的,可是也有一些限制。html

访问限制

访问限制主要是阿里云视频云提供的安全访问能力, 只须要云端配置, 播放器无需作额外的事情,而且拒绝访问的缘由会经过“X-Tengine-Error”Response Header返回,Http请求的错误的Code为403。java

开启Referer防盗链后,若是Referer Header的值不是控制台设置的值时,返回“denied by Referer ACL” 错误跨域

3991707b31a9483f6ff89fd48dd6c510d46664fc

Referer首部包含了当前请求页面的来源页面的地址,即表示当前页面是经过此来源页面里的连接进入的,还要注意如下两种状况下,Referer不会被发送:浏览器

  • 来源页面采用的协议为表示本地文件的 "file" 或者 "data" URI;
  • 当前请求页面采用的是非安全协议,而来源页面采用的是安全协议(HTTPS)。

好比下面视频页面直接'file'的方式打开,是能够播放的:缓存

caed6822e1e311ba7fc266047e82c60ce22221a6

要避免上面的两个遗漏,在启用Referer防盗链后,不要忘记禁止容许空的Referer,为了更加的安全,切记去掉容许空Referer的选择:安全

26f90562550524b08ed9c64693c1fc4299b832bc

播放中心鉴权

播放地址长期有效会更容易的非法扩散传播,视频点播提供的URL鉴权可经过生成动态的加密URL(包含权限验证、过时时效等信息)来区分合法请求,以达到保护视频资源的目的。固然用户首先得去点播服务开启URL鉴权,鉴权的地址格式:微信

http://qt1.alivecdn.com/olympic/cctv6d.flv?auth_key=1531045067-0-0-86c4b15261ea820b834c111b601acda3

播放域名开启鉴权后会在视频URL地址后添加auth_key的query string参数, 若是缺乏auth_key参数或有效期过时,在访问视频地址时会抛403错误,好比:cookie

997d3d8815f8d85cc9cbcc22e8ad364e65e3f83c

Aliplayer提供了authTimeout参数用户指定鉴权的有效期,默认值为2小时, 用户能够修改这个值,可是不要修改的过小,避免在播放过程当中过时,而致使播放失败。ide

var player = new Aliplayer({
    id: "player-con",
    source: "//common.qupai.me/player/qupai.mp4",
    width: "100%",
    height: "500px",
    autoplay: true,
    vid:"6bd7ad2a482e4829b726819d2168621d",
    playauth : "eyJTZWN1cml0eVRva2VuIjoiQ0FJUzN3SjFxNkZ0NUI",
    authTimeout:3600 //单位毫秒
  }, function (player) {
    console.log("播放器建立成功");
  });

业务方二次鉴权

阿里云的播放中心鉴权,在有效期内视频地址均可以被使用,而且Referer容易被伪造,若是可以加上业务方的一些信息作业务方的二次鉴权,对盗链的非法请求的判断更加精确,过程以下图:

b27a5b7c1d7a226ffd0d4880c2b0ab9641820595

  • 二次鉴权是指点播CDN将用户的请求透传到客户的鉴权中心,由客户本身断定该请求是否合法,CDN根据客户的判断结果执行相应动做:容许或拒绝访问。
  • 二次鉴权须要客户本身开发和部署鉴权中心,该鉴权中心的域名若是同时在 CDN上面加速,能够按照必定规则缓存客户的鉴权结果,以减轻客户鉴权中心的压力。点播CDN会默将把用户请求的 headers 和 request_uri 透传到客户自定义的鉴权中心,并根据鉴权中心返回的结果执行相应的动做。
  • Aliplayer会把用户播放域名下面的cookie值,透传到客户的鉴权中心,由客户本身断定该请求是否合法。
  • 启用Cookie的Secure和HttpOnly标记,让cookie更安全。  标记为 Secure 的Cookie只应经过被HTTPS协议加密过的请求发送给服务端,从 Chrome 52 和 Firefox 52 开始,不安全的站点(Http:)没法使用Cookie的 Secure 标记。  标记为HttpOnly的Cookie,经过JavaScript的 Document.cookieAPI没法访问带有 HttpOnly 标记的Cookie,它们只应该发送给服务端,避免跨域脚本 (XSS) 攻击。

视频加密

防盗链的安全机制能有效保障用户的合法访问,可是在用户合法获取播放地址,将视频本地,进而实现二次分发。所以,防盗链方案对于视频版权保护是远远不够的。没法保护视频文件的内容。Aliplayer支持了三种内容的加密方式:阿里云加密、HLS的标准加密、标准DRM, 浏览器支持状况:

加密方式

PC端

移动端

阿里云加密

Chrome、Safari、Firefox、

IE>十一、Edge

iOS不支持

Android部分支持,依赖于浏览器是否支持MSE

HLS的标准加密

Chrome、Safari、Firefox、 IE>十一、Edge

全支持

标准DRM

Google Widevine: Chrome、Firefox支持

微软 Playready:IE>十一、Edge 支持

iOS不支持

Chrome for Android部分支持,依赖Android设备

阿里云加密和标准DRM的安全性差很少,比HLS的标准加密方式的安全性高,可是若是须要考虑移动端,当前只能选择HLS的标准加密方式。
视频加密的详细介绍参考:点播内容安全机制

Aliplayer播放加密视频和普通方式没有区别,不用作多余属性的设置,只须要经过videoId的播放方式集成播放器播放视频,好比:

var player = new Aliplayer({
    id: "player-con",
    source: "//common.qupai.me/player/qupai.mp4",
    width: "100%",
    height: "500px",
    autoplay: true,
    vid:"6bd7ad2a482e4829b726819d2168621d",
    playauth : "eyJTZWN1cml0eVRva2VuIjoiQ0FJUzN3SjFxNkZ0NUI"
  }, function (player) {
    console.log("播放器建立成功");
  });

私有加密防调试

视频是私有加密的时候不但愿用户调试咱们的核心代码, Aliplayer安全加固添加了防调试的代码,主要包含两个阶段的:js加载解析的时候和执行到核心方法时候 。

若是用户打开开发者工具,打开页面时会中止加载变为一个空白页面, 以下图:

2f013a84cc7250cb9b86b0526bb1ef62dc0b73ac

注意:关闭开发者工具页面仍是刷新不出来的,须要在新的tab里从新打开页面

如何启用

经过引入Aliplayer提供的javascript文件开启防调试模式,考虑到在开发过程当中的调式, 用户能够在发布的产品中才引入,Javascript文件的地址:

<script src="https://g.alicdn.com/de/prismplayer/2.8.0/hls/aliplayer-vod-anti-min.js"></script>

 

原文连接 更多技术干货 请关注阿里云云栖社区微信号 :yunqiinsight  

相关文章
相关标签/搜索