博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
阿里云 Aliplayer高级功能介绍(八):安全播放
阅读量:5873 次
发布时间:2019-06-19

本文共 2973 字,大约阅读时间需要 9 分钟。

基本介绍

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

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

访问限制

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

后,如果Referer Header的值不是控制台设置的值时,返回“denied by Referer ACL” 错误

Referer首部包含了当前请求页面的来源页面的地址,即表示当前页面是通过此来源页面里的链接进入的,还要注意以下两种情况下,Referer不会被发送:

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

比如下面视频页面直接'file'的方式打开,是可以播放的:

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

播放中心鉴权

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

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

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

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

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容易被伪造,如果能够加上业务方的一些信息做业务方的二次鉴权,对盗链的非法请求的判断更加精确,过程如下图:

  • 二次鉴权是指点播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>11、Edge
iOS不支持
Android部分支持,依赖于浏览器是否支持MSE
Chrome、Safari、Firefox、 IE>11、Edge
全支持
Google Widevine: Chrome、Firefox支持
微软 Playready:IE>11、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加载解析的时候和执行到核心方法时候 。

如果用户打开开发者工具,打开页面时会停止加载变为一个空白页面, 如下图:

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

如何启用

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

复制代码

转载地址:http://uthnx.baihongyu.com/

你可能感兴趣的文章
Performance Tuning
查看>>
Javascript 强制浏览器渲染Dom文档
查看>>
用HTML5 Canvas为网页添加动态波浪背景
查看>>
matlab handle plot
查看>>
美国人这样教育小学生_节选
查看>>
大公司里学做人,小公司里学做事。
查看>>
html5学习笔记——html保留标签(一)
查看>>
第九次作业
查看>>
你们以为运营商只是HTTP插点广告而已么?
查看>>
远程下载马bypass waf
查看>>
关系完整性约束
查看>>
BZOJ 1007 [HNOI2008]水平可见直线 ——半平面交 凸包
查看>>
Linux内核第六节 20135332武西垚
查看>>
hdu1243 dp (类最长公共子序列)
查看>>
图论--有向图强连通分量的标记及缩点模板
查看>>
hdu3294 Girls' research manacher
查看>>
通用sqlserver分页存储过程
查看>>
(转载)C#提取汉字拼音首字母的方法
查看>>
PXE-cobbler 无人值守装机------续
查看>>
关于-O0、O1、O2、O3优化
查看>>