資料安全,是陪玩遊戲系統時刻關注的問題

雲豹科技阿星發表於2021-09-09

1.1 基礎防盜鏈

基礎防盜鏈主要是針對陪玩遊戲系統客戶端請求過程中所攜帶的一些關鍵資訊來驗證請求的合法性, 比如客戶端請求IP,請求URL中攜帶的referer。優點是規則簡單,配置和使用都很方便,缺點是防盜鏈所依賴的驗證資訊很多都是可以偽造的,因此此類防盜鏈可靠性較低。

IP  訪問控制

原理:

IP地址在網際網路上具有唯一性,通常陪玩遊戲系統客戶端在請求過程中,IP地址保持不變,客戶端向服務端(CDN節點)發起請求時,服務端可以明確獲取到客戶端的IP地址,因此可以利用IP 地址的這些特點進行訪問控制。

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

2. 支援針對IP段進行訪問控制(通常採用IP+子網掩碼的表示方式,比如192.168.1.0/24)

3. 支援區域訪問許可。比如,禁止或允許某些地區的使用者(根據訪問者的IP所在的地理位置)訪問某些特定的資源,常用於版權保

適用場景舉例:

 1)發現某些IP地址訪問次數巨大,屬於不正常的訪問或者可能是某種攻擊行為,這種情況下,陪玩遊戲系統可以考慮將該IP地址加入黑名單,此IP地址訪問到CDN的節點時會被直接拒絕。

2)加速的內容屬於公司或者企業的員工內部使用,不希望被企業之外的其他人訪問到。企業通常有固定統一的出口IP地址,因此可以將這些出口IP加入白名單,只允許白名單中的IP訪問,其他所有IP都將被拒絕。

3)有些特殊的資源只希望地區的使用者使用,禁止其他地區的使用者使用,可以使用地區訪問許可的功能。

Referer 防盜鏈

原理:

Referer在HTTP協議裡有特殊的用途,當瀏覽器向伺服器傳送請求時,一般會帶上

Referer頭,告知伺服器該請求是從哪個頁面連結過來的。Referer經常被用於頁面訪問統計、圖片防盜鏈等。

注意事項:

1) 在使用Referer防盜鏈功能時,應該特別注意指明空引用的處理方式(空引用是指

http請求頭中沒有攜帶Referer頭部,通常是直接在瀏覽器位址列訪問某個url或者透過非瀏覽器的方式訪問某個url時,請求頭部不會帶有referer頭部;),預設禁止空引用。

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

高階防盜鏈

陪玩遊戲系統中,高階防盜鏈主要是指時間戳防盜鏈、swf防盜鏈、回源鑑權防盜鏈。 時間戳防盜鏈的特點是加密的url具有時效性,無法偽造,當達到過期時間後url不再被

允許訪問,適合一些對“時效性”有要求的場景,使用時需要內容提供商和CDN配合,內    容提供商負責生成加密的url,CDN負責根據預先設定的規則對url進行合法性驗證。時間戳防盜鏈由於實現原理簡單、可靠性高,推薦使用。

Swf防盜鏈為RTMP協議所特有,其特點為需要客戶提前將SWF檔案上傳至CDN節點, 由客戶端和CDN節點在請求過程中基於一定機理進行加密和解密驗證,CDN驗證透過則響 應使用者請求,驗證失敗則拒絕使用者請求。

回源鑑權的特點是CDN節點每次接收到的請求,都需要先回源進行驗證,驗證透過後才認為請求合法,繼續提供服務,適用於對防盜鏈有很高的實時性要求的場景,比如陪玩遊戲系統。另外,一些特殊性的防盜鏈,CDN預設不支援的情況下也可以考慮採用回源鑑權的形式。

時間戳防盜鏈

原理:

1、當使用者發起請求時影片請求時,使用者的請求會被引導至客戶源站。

2、客戶源站透過一系列引數共同加密生成一串密文。

3、終端使用者利用客戶源站返回的url,重新向服務商節點發起請求。

4、服務商節點進行驗證:請求是否過期以及加密串是否匹配。

目前服務商支援絕對時間和相對時間兩種方式的時間戳防盜鏈控制。

服務商節點進行驗證:

a) 根據過期時間wsABSTime和當前時間進行比較,確認請求是否過期

b) 根據約定的md5計算方式和密文,計算出md5加密串後和url中原始的加密串進行比較。

只有a)和b)都驗證透過,請求才會被認為是合法的。不合法的請求可以採取禁止訪問或者302重定向到指定的url。

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

與絕對時間控制方式相比,相對時間控制方式使用引數keeptime和wsTime來共同決定過期時間,wsTime表示終端使用者向源站請求url時,源站的機器時間,keeptime表示url 有效的時間長度,以秒為單位,以十六進位制或十進位制表示,同時keeptime作為引數加入加密 串 的 計 算 ;

服務商節點在進行url請求是否過期時,判斷方式如下: 當前時間-wsTime< keeptime ,則url請求未過期;

當前時間-wsTime>= keeptime ,表示url請求已過期;

若keeptime為空,則按照發布點配置的預設過期時間來進行判斷(如5分鐘)。同樣,相對時間控制方式除校驗有效期之外,也需要校驗md5加密串是否匹配。

使用方法:

1、需要確認的資訊

a) 陪玩遊戲系統確認時間的表示格式。預設採用的是Unix時間戳的形式,比如1371982466表示時間是2013-06-23 18:14:26,支援其他一些時間表達格式,比如:

i. 20130623181426

ii. 2013-06-23

iii. 51c6ca82(推薦此表示方式,將十進位制的1371982466採用16進製表示,,有較好的隱蔽性)

b) 陪玩遊戲系統需要確認使用絕對時間還是相對時間控制方式,使用相對時間控制的話還需要確認是否需要使用keeptime,不使用keeptime需要與客戶確認預設配置的過期時長。

c) 確認參與md5計算的相關引數,以及組合順序。

應用場景舉例: 

1、適用於對url有一定時效性的場景

2、如果在md5加密演算法中新增客戶端的ip,可以防止使用者直接將獲取到的URL貼上分享出去,提供給他人播放。陪玩遊戲系統客戶端的ip也可以透過url中的引數傳遞。

注意事項:

1)時間戳防盜鏈預設支援,可以直接配置,不需要再次開發

2)當防盜鏈涉及的引數發生變更時,需要通知CDN進行配合更改,原則上密文一旦確定儘量不要發生變動,不然可能導致源和加速節點使用的密文不一致,請求全部驗證不透過

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

回源鑑權防盜鏈

原理:

1、陪玩遊戲系統終端使用者向CDN請求內容,在請求中攜帶需要回源鑑權的引數。

2、 CDN節點可透過POST或者GET方式向使用者鑑權伺服器返回需要鑑權的引數,鑑權引數需要使用者提前告知CDN。

3、鑑權伺服器根據CDN傳送而來的鑑權資訊,進行防盜鏈判斷,決定是否允許使用者請求該資源,並將結果返回給CDN節點。

4、 CDN節點根據客戶鑑權伺服器返回的結果,響應或者拒絕終端使用者的影片請求。

應用場景舉例:

1、客戶技術實力比較強,又不希望第三方公司知悉其防盜鏈原理時,可使用回源鑑權防盜鏈。

2、 CDN無法滿足客戶特殊防盜鏈需求時,可使用回源鑑權防盜鏈。

使用方法:

1、告知CDN,回源鑑權的引數

2、告知CDN,鑑權伺服器地址。

3、告知CDN,回源鑑權的方式,目前支援get及post兩種

4、告知CDN,鑑權結果,例如1代表成功,0代表失敗

5、告知CDN,超時等待時間,及超時如何處理,例如,鑑權伺服器3S不響應,就同意請求,或拒絕請求。

注意事項:

1、每次請求都需要先進行鑑權,在請求量較大時,需要考慮鑑權伺服器的壓力

2、該鑑權形式客戶需要陪玩遊戲系統維護專門的鑑權伺服器。

宣告:本文由雲豹科技轉發自巨松9011部落格,如有侵權請聯絡作者刪除


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69982461/viewspace-2791300/,如需轉載,請註明出處,否則將追究法律責任。

相關文章