防盜鏈

一邮辽、基礎(chǔ)防盜鏈

基礎(chǔ)防盜鏈主要是針對客戶端請求過程中所攜帶的一些關(guān)鍵信息來驗證請求的合法性唠雕, 比如客戶端請求IP,請求URL中攜帶的referer吨述。優(yōu)點是規(guī)則簡單岩睁,配置和使用都很方便,缺點是防盜鏈所依賴的驗證信息很多都是可以偽造的揣云,因此此類防盜鏈可靠性較低捕儒。

1、IP 訪問控制

原理:

IP地址在互聯(lián)網(wǎng)上具有唯一性邓夕,通忱卟悖客戶端在請求過程中,IP地址保持不變翎迁,客戶端向服務(wù)端(CDN節(jié)點)發(fā)起請求時,服務(wù)端可以明確獲取到客戶端的IP地址净薛,因此可以利用IP 地址的這些特點進(jìn)行訪問控制汪榔。

1、支持1個或多個IP的訪問控制(黑名單或白名單)

2、支持針對IP段進(jìn)行訪問控制(通常采用IP+子網(wǎng)掩碼的表示方式痴腌,比如192.168.1.0/24)

3雌团、支持區(qū)域訪問許可。比如士聪,禁止或允許某些地區(qū)的用戶(根據(jù)訪問者的IP所在的地理位置)訪問某些特定的資源锦援,常用于版權(quán)保

適用場景舉例:

1)發(fā)現(xiàn)某些IP地址訪問次數(shù)巨大,屬于不正常的訪問或者可能是某種攻擊行為剥悟,這種情況下可以考慮將該IP地址加入黑名單灵寺,此IP地址訪問到CDN的節(jié)點時會被直接拒絕。

2)加速的內(nèi)容屬于公司或者企業(yè)的員工內(nèi)部使用区岗,不希望被企業(yè)之外的其他人訪問到略板。企業(yè)通常有固定統(tǒng)一的出口IP地址,因此可以將這些出口IP加入白名單慈缔,只允許白名單中的IP訪問叮称,其他所有IP都將被拒絕。

3)有些特殊的資源只希望北京地區(qū)的用戶使用藐鹤,禁止其他地區(qū)的用戶使用瓤檐,可以使用地區(qū)訪問許可的功能。

2娱节、Referer 防盜鏈

原理:

Referer在HTTP協(xié)議里有特殊的用途挠蛉,當(dāng)瀏覽器向服務(wù)器發(fā)送請求時倔叼,一般會帶上Referer頭岂丘,告知服務(wù)器該請求是從哪個頁面鏈接過來的抖苦。Referer經(jīng)常被用于頁面訪問統(tǒng)計紊服、圖片防盜鏈等掐隐。

流媒體直播同樣支持Referer防盜鏈妻味,當(dāng)請求發(fā)送到CDN服務(wù)器后放吩,CDN服務(wù)器檢查客戶URL中所攜帶的Referer字段的信息猜年,禁止或者允許符合特定規(guī)則(支持正則匹配)的Referer的請求轧抗。

適用場景舉例:

某直播客戶恩敌,通過referer做防盜鏈。比如http://cdn.example.com/横媚,訪問該頁面下的所有直播流時纠炮,比如http://cdn.example.com/live1.flv,瀏覽器在請求時會自動帶上Referer:http://cdn.example.com/表明請求的來源地址灯蝴。

注意事項:

1) 在使用Referer防盜鏈功能時恢口,應(yīng)該特別注意指明空引用的處理方式(空引用是指http請求頭中沒有攜帶Referer頭部,通常是直接在瀏覽器地址欄訪問某個url或者通過非瀏覽器的方式訪問某個url時穷躁,請求頭部不會帶有referer頭部耕肩;),默認(rèn)禁止空引用。

2) Referer很容易偽造猿诸,因此referer防盜鏈安全性較低婚被。

二、高級防盜鏈

流媒體直播中梳虽,高級防盜鏈主要是指時間戳防盜鏈址芯、swf防盜鏈、回源鑒權(quán)防盜鏈窜觉。 時間戳防盜鏈的特點是加密的url具有時效性谷炸,無法偽造,當(dāng)達(dá)到過期時間后url不再被允許訪問竖螃,適合一些對“時效性”有要求的場景淑廊,使用時需要內(nèi)容提供商和CDN配合,內(nèi) 容提供商負(fù)責(zé)生成加密的url特咆,CDN負(fù)責(zé)根據(jù)預(yù)先設(shè)定的規(guī)則對url進(jìn)行合法性驗證季惩。時間戳防盜鏈由于實現(xiàn)原理簡單、可靠性高腻格,推薦使用画拾。

Swf防盜鏈為RTMP協(xié)議所特有,其特點為需要客戶提前將SWF文件上傳至CDN節(jié)點菜职, 由客戶端和CDN節(jié)點在請求過程中基于一定機理進(jìn)行加密和解密驗證青抛,CDN驗證通過則響 應(yīng)用戶請求,驗證失敗則拒絕用戶請求酬核。

回源鑒權(quán)的特點是CDN節(jié)點每次接收到的請求蜜另,都需要先回源進(jìn)行驗證,驗證通過后才認(rèn)為請求合法嫡意,繼續(xù)提供服務(wù)举瑰,適用于對防盜鏈有很高的實時性要求的場景。另外蔬螟,一些特殊性的防盜鏈此迅,CDN默認(rèn)不支持的情況下也可以考慮采用回源鑒權(quán)的形式。

1旧巾、時間戳防盜鏈

原理:

1耸序、當(dāng)用戶發(fā)起請求時視頻請求時,用戶的請求會被引導(dǎo)至客戶源站鲁猩。例如坎怪,終端用戶發(fā)起的請求url為:http://www.example.com/test.flv

2、客戶源站通過一系列參數(shù)共同加密生成一串密文廓握。

3芋忿、終端用戶利用客戶源站返回的url炸客,重新向服務(wù)商節(jié)點發(fā)起請求。

4戈钢、服務(wù)商節(jié)點進(jìn)行驗證:請求是否過期以及加密串是否匹配。

目前服務(wù)商支持絕對時間和相對時間兩種方式的時間戳防盜鏈控制是尔。

絕對時間控制方式原理如下:

此方式下用于生成密文的參數(shù)有過期時間wsABSTime殉了、請求直播流、服務(wù)商key(由服務(wù)商提供)拟枚、IP地址串薪铜。假設(shè)過期時間為:4d024e80,用戶請求的直播流為:test.flv,服務(wù)商key為:abc恩溅,ip地址為192.168.1.1隔箍,則以上數(shù)據(jù)經(jīng)過md5加密后,生成的密文為:84579e4b82787870e418004c59f696b0脚乡, 則 客 戶 源 站 返 回 給 終 端 用 戶 的 url 為 :?http://cdn.example.com/test.flv?wsSecret=84579e4b82787870e418004c59f696b0&wsABSTime=4d024e80

終端用戶利用客戶源站返回的url蜒滩,重新向服務(wù)商節(jié)點發(fā)起請求,發(fā)起請求的url為:?http://cdn.example.com/test.flv?wsSecret=84579e4b82787870e418004c59f696b0?& wsABSTime =4d024e80

服務(wù)商節(jié)點進(jìn)行驗證:

a) 根據(jù)過期時間wsABSTime和當(dāng)前時間進(jìn)行比較奶稠,確認(rèn)請求是否過期

b) 根據(jù)約定的md5計算方式和密文俯艰,計算出md5加密串后和url中原始的加密串進(jìn)行比較。

只有a)和b)都驗證通過锌订,請求才會被認(rèn)為是合法的竹握。不合法的請求可以采取禁止訪問或者302重定向到指定的url。

相對時間控制方式原理如下:

與絕對時間控制方式相比辆飘,相對時間控制方式使用參數(shù)keeptime和wsTime來共同決定過期時間啦辐,wsTime表示終端用戶向源站請求url時,源站的機器時間蜈项,keeptime表示url 有效的時間長度芹关,以秒為單位,以十六進(jìn)制或十進(jìn)制表示战得,同時keeptime作為參數(shù)加入加密 串 的 計 算 充边; 例 如 : rtmp://rtmpup4.pstatp.com/live/xxxxxx/xxxx?wsSecret=xxx&keeptime=7200&wsTime=xxx。

服務(wù)商節(jié)點在進(jìn)行url請求是否過期時常侦,判斷方式如下: 當(dāng)前時間-wsTime< keeptime 浇冰,則url請求未過期;

當(dāng)前時間-wsTime>= keeptime 聋亡,表示url請求已過期肘习;

若keeptime為空,則按照發(fā)布點配置的默認(rèn)過期時間來進(jìn)行判斷(如5分鐘)坡倔。同樣漂佩,相對時間控制方式除校驗有效期之外脖含,也需要校驗md5加密串是否匹配。

使用方法:

1投蝉、需要確認(rèn)的信息

a) 確認(rèn)時間的表示格式养葵。默認(rèn)采用的是Unix時間戳的形式,比如1371982466表示時間是2013-06-23 18:14:26瘩缆,支持其他一些時間表達(dá)格式关拒,比如:

i. 20130623181426

ii. 2013-06-23

iii. 51c6ca82(推薦此表示方式,將十進(jìn)制的1371982466采用16進(jìn)制表示庸娱,着绊,有較好的隱蔽性)

b) 需要確認(rèn)使用絕對時間還是相對時間控制方式,使用相對時間控制的話還需要確認(rèn)是否需要使用keeptime熟尉,不使用keeptime需要與客戶確認(rèn)默認(rèn)配置的過期時長归露。

c) 確認(rèn)參與md5計算的相關(guān)參數(shù),以及組合順序斤儿。

應(yīng)用場景舉例:

1剧包、適用于對url有一定時效性的場景

2、如果在md5加密算法中添加客戶端的ip雇毫,可以防止用戶觀看視頻后直接將獲取到的視頻URL粘貼分享出去玄捕,提供給他人播放∨锓牛客戶端的ip也可以通過url中的參數(shù)傳遞枚粘。

注意事項:

1)時間戳防盜鏈默認(rèn)支持,可以直接配置飘蚯,不需要再次開發(fā)

2)當(dāng)防盜鏈涉及的參數(shù)發(fā)生變更時馍迄,需要通知CDN進(jìn)行配合更改,原則上密文一旦確定盡量不要發(fā)生變動局骤,不然可能導(dǎo)致源和加速節(jié)點使用的密文不一致攀圈,請求全部驗證不通過

3)使用IP進(jìn)行md5計算可能帶來一些問題:如果加密使用的IP1,而到CDN這邊用的是另外一個IP2峦甩,這樣就會被禁止訪問赘来。

2、swf 防盜鏈

原理:

用戶需要將播放視頻對應(yīng)flash播放器的SWF文件提前交由CDN凯傲,CDN會將該文件提前分發(fā)至CDN節(jié)點犬辰。用戶播放器端,必須為flash播放器冰单。

1幌缝、終端用戶向CDN節(jié)點請求RTMP視頻播放。例如: RTMP://www.test.com/live/channel

2诫欠、 CDN節(jié)點在接收到用戶RTMP請求時涵卵,會對域名進(jìn)行判斷是否需要進(jìn)行SWF防盜驗證浴栽。若需要進(jìn)行防盜鏈驗證,則向播放器端發(fā)送相應(yīng)的SWF密鑰轿偎。該密鑰由CDN節(jié)點生成典鸡。

3、用戶播放器端贴硫,將SWF文件椿每,及CDN發(fā)送給播放器的SWF密鑰,利用加密算法HMACsha256英遭,生成一個加密值,并回傳給CDN節(jié)點亦渗。

4挖诸、 CDN節(jié)點用客戶提交給CDN的SWF文件,結(jié)合發(fā)送給終端用戶的SWF密鑰法精,利用加密算法HMACsha256多律,生成一個加密值,與播放器端回傳給CDN的KEY文件進(jìn)行比對搂蜓。若比如結(jié)果一致狼荞,則響應(yīng)用戶播放請求;若比對結(jié)果不一致帮碰,則拒絕用戶播放請求相味。

應(yīng)用場景舉例:

1、該驗證過程是在rtmp協(xié)議的握手過程中完成殉挽,故僅適用于adobe播放器的rtmp協(xié)議丰涉。

2、客戶對防盜鏈需要比較高斯碌,又不愿意進(jìn)行開發(fā)時一死,可直接使用adobe播放器所自帶的swf防盜鏈。

注意事項:

1傻唾、用戶需要提前將SWF文件提交到CDN,并確保提交至CDN的SWF文件與播放器端的

SWF文件一致投慈。

2、確認(rèn)加密算法冠骄。

3伪煤、步驟二中,的SWF密鑰生成難度需要適配不同的SWF猴抹,屬于高度定制化带族。

3、回源鑒權(quán)防盜鏈

原理:

1蟀给、終端用戶向CDN請求視頻內(nèi)容蝙砌,在請求中攜帶需要回源鑒權(quán)的參數(shù)阳堕。例如:?http://www.test.com/live/channel.flv?key1=vaule1&key2=vaule2

2、 CDN節(jié)點可通過POST或者GET方式向用戶鑒權(quán)服務(wù)器返回需要鑒權(quán)的參數(shù)择克,鑒權(quán)參數(shù)需要用戶提前告知CDN恬总。

3、鑒權(quán)服務(wù)器根據(jù)CDN傳送而來的鑒權(quán)信息肚邢,進(jìn)行防盜鏈判斷壹堰,決定是否允許用戶請求該直播視頻,并將結(jié)果返回給CDN節(jié)點骡湖。

4贱纠、 CDN節(jié)點根據(jù)客戶鑒權(quán)服務(wù)器返回的結(jié)果,響應(yīng)或者拒絕終端用戶的視頻請求响蕴。

應(yīng)用場景舉例:

1谆焊、客戶技術(shù)實力比較強,又不希望第三方公司知悉其防盜鏈原理時浦夷,可使用回源鑒權(quán)防盜鏈辖试。

2、 CDN無法滿足客戶特殊防盜鏈需求時劈狐,可使用回源鑒權(quán)防盜鏈罐孝。

使用方法:

1、告知CDN肥缔,回源鑒權(quán)的參數(shù)

2莲兢、告知CDN,鑒權(quán)服務(wù)器地址辫继。

3怒见、告知CDN,回源鑒權(quán)的方式姑宽,目前支持get及post兩種

4遣耍、告知CDN,鑒權(quán)結(jié)果炮车,例如1代表成功舵变,0代表失敗

5、告知CDN瘦穆,超時等待時間纪隙,及超時如何處理,例如扛或,鑒權(quán)服務(wù)器3S不響應(yīng)绵咱,就同意請求,或拒絕請求熙兔。

注意事項:

1悲伶、每次請求都需要先進(jìn)行鑒權(quán)艾恼,在請求量較大時,需要考慮鑒權(quán)服務(wù)器的壓力

2麸锉、該鑒權(quán)形式客戶需要維護專門的鑒權(quán)服務(wù)器钠绍。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市花沉,隨后出現(xiàn)的幾起案子柳爽,更是在濱河造成了極大的恐慌,老刑警劉巖碱屁,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件磷脯,死亡現(xiàn)場離奇詭異,居然都是意外死亡娩脾,警方通過查閱死者的電腦和手機争拐,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來晦雨,“玉大人,你說我怎么就攤上這事隘冲∧智疲” “怎么了?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵展辞,是天一觀的道長奥邮。 經(jīng)常有香客問我,道長罗珍,這世上最難降的妖魔是什么洽腺? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮覆旱,結(jié)果婚禮上蘸朋,老公的妹妹穿的比我還像新娘。我一直安慰自己扣唱,他們只是感情好藕坯,可當(dāng)我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著噪沙,像睡著了一般炼彪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上正歼,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天辐马,我揣著相機與錄音,去河邊找鬼局义。 笑死喜爷,一個胖子當(dāng)著我的面吹牛冗疮,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播贞奋,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼赌厅,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了轿塔?” 一聲冷哼從身側(cè)響起特愿,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎勾缭,沒想到半個月后揍障,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡俩由,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年毒嫡,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片幻梯。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡兜畸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出碘梢,到底是詐尸還是另有隱情咬摇,我是刑警寧澤,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布煞躬,位于F島的核電站肛鹏,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏恩沛。R本人自食惡果不足惜在扰,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望雷客。 院中可真熱鬧芒珠,春花似錦、人聲如沸佛纫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽呈宇。三九已至好爬,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間甥啄,已是汗流浹背存炮。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人穆桂。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓宫盔,卻偏偏與公主長得像,于是被迫代替她去往敵國和親享完。 傳聞我的和親對象是個殘疾皇子灼芭,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內(nèi)容