zoukankan      html  css  js  c++  java
  • 阿里云 Aliplayer高级功能介绍(八):安全播放

    基本介绍

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

    75cb1b9ab482c09cc2fbb9b5522e45d32e9d1975

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

    访问限制

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

    开启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错误,比如:

    997d3d8815f8d85cc9cbcc22e8ad364e65e3f83c

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

    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>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加载解析的时候和执行到核心方法时候 。

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

    2f013a84cc7250cb9b86b0526bb1ef62dc0b73ac

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

    如何启用

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

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

     

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

  • 相关阅读:
    51nod 1087 1 10 100 1000(找规律+递推+stl)
    51nod 1082 与7无关的数 (打表预处理)
    51 nod 1080 两个数的平方和
    1015 水仙花数(水题)
    51 nod 1003 阶乘后面0的数量
    51nod 1002 数塔取数问题
    51 nod 1001 数组中和等于K的数对
    51 nod 1081 子段求和
    51nod 1134 最长递增子序列 (O(nlogn)算法)
    51nod 1174 区间中最大的数(RMQ)
  • 原文地址:https://www.cnblogs.com/zhaowei121/p/10330300.html
Copyright © 2011-2022 走看看