1. 程式人生 > >阿裏雲 Aliplayer高級功能介紹(八):安全播放

阿裏雲 Aliplayer高級功能介紹(八):安全播放

當前 版權 flv gin 阿裏雲 創建 qup smplayer 區別

基本介紹
如何保障視頻內容的安全,不被盜鏈、非法下載和傳播,阿裏雲視頻點播已經有一套完善的機制保障視頻的安全播放:

技術分享圖片

更多詳細內容查看點播內容安全播放,H5的Aliplayer對於上面的安全機制都是支持的,但是也有一些限制。

訪問限制
訪問限制主要是阿裏雲視頻雲提供的安全訪問能力, 只需要雲端配置, 播放器無需做額外的事情,並且拒絕訪問的原因會通過“X-Tengine-Error”Response Header返回,Http請求的錯誤的Code為403。

開啟Referer防盜鏈後,如果Referer Header的值不是控制臺設置的值時,返回“denied by Referer ACL” 錯誤

技術分享圖片

Referer首部包含了當前請求頁面的來源頁面的地址,即表示當前頁面是通過此來源頁面裏的鏈接進入的,還要註意以下兩種情況下,Referer不會被發送:

來源頁面采用的協議為表示本地文件的 "file" 或者 "data" URI;
當前請求頁面采用的是非安全協議,而來源頁面采用的是安全協議(HTTPS)。
比如下面視頻頁面直接‘file‘的方式打開,是可以播放的:
技術分享圖片
要避免上面的兩個遺漏,在啟用Referer防盜鏈後,不要忘記禁止允許空的Referer,為了更加的安全,切記去掉允許空Referer的選擇:

技術分享圖片

播放中心鑒權
播放地址長期有效會更容易的非法擴散傳播,視頻點播提供的URL鑒權可通過生成動態的加密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
HLS的標準加密
Chrome、Safari、Firefox、 IE>11、Edge
全支持
標準DRM
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文件的地址:

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

阿裏雲 Aliplayer高級功能介紹(八):安全播放