在CDN分發的內容默認為公開資源,用戶拿到URL后均可訪問,為防止站點資源被惡意下載盜用,除了通過Referer防盜鏈、IP黑白名單等防控方式,您還可以采用URL鑒權,自行配置校驗鑒權URL中的加密串和時間戳,更安全有效地保護源站資源。
鑒權邏輯
URL鑒權功能通過阿里云CDN節點與客戶資源站點配合,形成了更為安全可靠的源站資源防盜方法。主要由以下幾個部分配合:
源站應用服務器:根據鑒權URL生成規則(包括鑒權算法、密鑰)生成鑒權URL返回給客戶端。
客戶端:發起資源請求,并發送鑒權URL給CDN節點進行驗證。
CDN節點:對鑒權URL中的鑒權信息(鑒權字符串、時間戳等)進行驗證。
CDN客戶在源站應用服務器配置鑒權URL的生成規則(包括鑒權算法和密鑰)。
假設鑒權URL為:
http://DomainName/timestamp/md5hash/FileName
。客戶端訪問源站應用的頁面時,源站應用服務器將會按照鑒權URL的生成規則生成鑒權URL,并且把鑒權URL包含在應用頁面上返回給客戶端(圖中②和③)。
客戶端使用鑒權URL向CDN節點發起資源請求(圖中④)。
CDN節點對鑒權URL中的鑒權信息(包括鑒權字符串、時間戳等)進行驗證,判斷請求的合法性。
鑒權失敗,拒絕訪問請求。
鑒權通過,正常響應合法請求。
說明若CDN節點沒有緩存資源,CDN節點回源前,會去掉鑒權URL中的鑒權參數,將鑒權URL還原為原始URL(例如:
http://DomainName/FileName
),再使用原始URL生成緩存key或者發起回源請求。您的請求URL經過CDN鑒權后,URL中的特殊字符,例如
=
、+
等會被轉義。
注意事項
配置URL鑒權后,鑒權失敗請求仍可訪問到CDN節點,但會被CDN節點拒絕并返回403狀態碼,CDN日志中仍會記錄鑒權失敗的請求記錄。
由于URL鑒權功能采用的是自行配置校驗鑒權URL中的加密串和時間戳,因此在惡意請求被CDN節點攔截的同時,會產生少量的流量費用,如果客戶端使用HTTPS協議訪問,還會產生HTTPS請求數費用(因為攔截惡意請求的時候,也同時消耗了CDN節點的處理資源)。
配置鑒權URL并開啟鑒權
請確保您已經在您的源站應用服務器配置了鑒權URL的生成規則(包括鑒權算法、密鑰)。
CDN配置的URL鑒權邏輯必須與您的源站應用服務器的URL鑒權邏輯保持一致。
登錄CDN控制臺。
在左側導航欄,單擊域名管理。
在域名管理頁面,找到目標域名,單擊操作列的管理。
在指定域名的左側導航欄,單擊訪問控制。
單擊URL鑒權頁簽。
在鑒權URL設置區域,單擊修改配置。
打開URL鑒權開關,配置URL鑒權信息。
參數
說明
鑒權類型
主KEY
輸入鑒權方式對應的主用密碼。由6~128個字符組成,支持大寫字母、小寫字母、數字。
備KEY
輸入鑒權方式對應的備用密碼。由6~128個字符組成,支持大寫字母、小寫字母、數字。主、備KEY至少要填寫一個。
鑒權URL有效時長
CDN配置的鑒權URL有效時長,用戶可在(timestamp+CDN上鑒權URL有效時長)時間區間內訪問CDN,超出該區間,鑒權失效。
單位:秒
取值范圍:1~31536000
默認值:1800(30分鐘)
示例:例如簽算服務器生成鑒權URL的時間(timestamp)為2020-08-15 15:00:00(UTC+8),CDN上鑒權URL有效時長為1800秒,則鑒權URL失效時間為2020-08-15 15:30:00(UTC+8)。
簽名參數
通過設置簽名參數,可以自定義簽名參數名稱。僅在鑒權類型設置為F方式的時候有效。
時間戳參數
通過設置時間戳參數,可以自定義時間戳參數名稱。僅在鑒權類型設置為F方式的時候有效。
時間戳格式
設置時間戳格式,支持十進制(Unix時間戳)和十六進制(Unix時間戳)。僅在鑒權類型設置為F方式的時候有效。
URL編碼
URL編碼開關,默認關閉,開啟的情況下將會對用戶請求URL做URL編碼處理。僅在鑒權類型設置為F方式的時候有效。
規則條件
規則條件能夠對用戶請求中攜帶的各種參數信息進行識別,以此來決定某個配置是否對該請求生效。
不使用:不使用規則條件。
選擇已配置的規則引擎,新增或修改規則引擎請參見規則引擎。
單擊確定。
驗證鑒權URL正確性
為保證服務器正確實現了鑒權邏輯,配置鑒權URL后,建議您在CDN控制臺生成對應的鑒權URL,校驗鑒權URL的正確性。
在生成鑒權URL區域,配置原始URL和鑒權信息。
參數
說明
原始URL
輸入完整的原始URL地址,例如:
https://www.aliyun.com
。鑒權類型
按照您在配置鑒權URL并開啟鑒權的配置,選擇URL鑒權類型。
鑒權KEY
按照您在配置鑒權URL并開啟鑒權的配置,輸入您配置的主KEY或備KEY。
鑒權URL有效時長
按照您在配置鑒權URL并開啟鑒權的配置,輸入URL鑒權的有效時長,單位為秒。
單擊開始生成,即可獲得鑒權URL和Timestamp。
關閉URL鑒權
如果CDN上的URL鑒權功能已經關閉了,但是客戶端發起的請求URL里面依然攜帶鑒權參數的話,就會導致CDN無法把客戶端發起的請求URL(帶鑒權參數)還原為原始URL,最終所有請求都無法命中緩存,均會透傳回源站,導致源站的流量大漲,同時也會增加源站的流量費用。因此,如果您需要停止使用URL鑒權,需同時關閉應用服務器和CDN的URL鑒權功能。
在CDN控制臺的鑒權URL設置區域,單擊修改配置,關閉URL鑒權開關。
在您的應用服務器中去掉請求URL的鑒權參數。