幫助中心

我們將(jiāng)為您提供完善的幫助文檔,竭誠到懂為您提供最優質的服務!

時(shí)間戳防盜鍊

操作說(shuō)明

登錄,進(jìn)入控制台->CDN-秒小>域名管理->配置->訪問控制

時(shí)間戳防盜鍊修改配置

時(shí)間戳防盜鍊:默認為關閉,開(kāi)啟時(shí),會(huì)鐘空同時(shí)生成(chéng)兩外人(liǎng)組可用的key,用戶需先按照上些文檔說(shuō)明在代碼中將(jiāng)Key配置進(玩技jìn)您的URL,再進(jìn)煙村行格式檢查,然後(hòu)确認開(kāi)啟;還體門(hái)可以自定義輸入KEY微兵,支持輸入備用KEY且不能(néng)與主KEY相同;同時(s器女hí)需要輸入檢查URL,以保證鑒權件話服務正常可用,以免影響服務。

算法說(shuō)明

基于時(shí)間戳的防盜鍊是通過(guò)對(體林duì)時(shí)間有關的字符串進(jìn)呢高行簽名,將(jiāng)時(shí)間、簽名通過(guò)一定呢哥的方式傳遞給 CDN 服務器作為判定依據,CDN 放好邊緣節點根據約定的算法判斷來訪URL是否有訪問權限。

通過(guò),執行下一步;不通過(guò),響應 H友信TTP status code 403。

若同時(shí)配置了 Referer、UA防北飛盜鍊、時(shí)間戳防盜鍊,有一項不滿足條件,即暗暗為不通過(guò),響應 403 。

簽名參數

  • T:URL 過(guò)期時(shí)間。按 unix_time 的 為老16進(jìn)制小寫形式表示。 如白空 2015-08-01 00:00:00 –> 143835道間8400 –> 55bb9b80
  • key:在開(kāi)啟時(shí)間戳防盜花說鍊時(shí),可以由使用:(控制台->CDN->時為;域名管理->訪問控制->時(shí)間戳防盜鍊),使用其中一明友個即可。也可以自行使用算法生成(chén秒相g)。
  • path:訪問資源的 URL 中的路徑部分,例土和如:訪問的URL為 http://xxx.yyy.com/DIR1/dir2/vodf輛體ile.mp4?v=1.1,則 path = /DIR1/dir2/vodfil喝見e.mp4(注意不含 querystrin水分g 部分)

簽名算法

  • 簽名原始字符串 S = key + url_enc計房ode(path) + T 。斜線 / 不編碼。
  • 簽名 SIGN = md5(S).to_lower(),to_lo林妹wer 指將(jiāng)字符串轉換為小寫;

注:本文所提到(dào)的 url_encode 算法。

簽名參數傳遞方式

作為URL查詢參數。

例如原始訪問的URL為: http://xxx.yyy.com/DI的我R1/dir2/vodfile.mp4?v北數=1.1

最終形成(chéng)的訪問URL為: http://xxx.yyy.com/DIR1/dir2/vodfile.mp術離4?v=1.1&sign=<SIGN>&t=&l兒笑t;T>

  • 簽名參數 sign、 t ,sign 在前,t 在後(hòu);他員
  • <SIGN><T> 替換為對(duì)應的值, 實際url中不含<&飛家gt; ;

訪問url

訪問 url 的 path 部購道分也需要 url_encode,其算法與簽名時(s如近hí)使用 url_encode頻風 算法一緻。斜線 / 不編碼。

訪問 url 為:

scheme+"://"+host+url_encode(path)+query_part

http://xxx.yyy.com/DIR1/dir2/vodfile.mp4?朋南v=1.1&sign=19eb212771e87cc還照3d478b9f32d6c7bf9&t=55bb9就懂b80
http://xxx.yyy.com/DIR1/%E4%B8%AD%城吃E6%96%87/vodfile.mp4?v=1.2&sign=6商商356bca0d2aecf7211業公003e468861f5ea&t=55bb9b80

注:

  1. 本文所提到(dào)的 url_encode 算法務間,斜線 / 不編碼。
  2. 訪問 url 的 path 部分推薦按地術 url_encode 編碼,如下例。
示例
例1:

URL http://xxx.yyy.com/DIR1/dir2校了/vodfile.mp4?v=1.1 ,假設 key = 12345678 ;過(guò)期時(shí)間為 2015-08-01 00:00:00 ,即刀聽 1438358400 ,也就(jiù友會)是 T = 55bb9b80S = 12345678/DIR1/dir2/vodfile.mp455商筆bb9b80SIGN = 19eb212771e87cc3d478b9f32d6c從說7bf9 , 訪問 url 為:

http://xxx.yyy.com/DIR1/dir2/海們vodfile.mp4?v=1.1&sign=19eb2高朋12771e87cc3d478b9f32d6c7bf9&t人河=55bb9b80

之後(hòu)將(jiāng) url 地址填寫在上圖中的是很 檢查url 處驗證。

例2:

URL http://xxx.yyy.com/DIR1/中文/vodfile.mp4跳嗎?v=1.2 ,假設 key = 12345678T = 55bb9b80S = 12345678/DIR1/%E4%B8%AD%E6%96%87/vo女鐘dfile.mp455bb9b80SIGN = 6356bca0d2aecf721100拍草3e468861f5ea ,訪問 url 為:

http://xxx.yyy.com/DIR1/%E4%B8%A司問D%E6%96%87/vodfile.mp4?v=1.公飛2&sign=6356bca0d2aecf7211兒看003e468861f5ea&am木從p;t=55bb9b80

之後(hòu)將(jiāng) url 地址填寫哥短在上圖中的 檢查url 處驗證。

服務端驗證

服務端拿到(dào)原始的 url ,直接解析出 host, pa喝理th, sign, t ,再簽對爸名。

算法: S = key + path + t,SIGN = md5(S).to_高影lower()

注意此處沒(méi)有 url_encode 操作。

原始的 url 指未經(jīng) url_decoded 的内容大熱。

以 nginx 為例說(shuō)明:

浏覽器發(fā)出實際請求url: http://example.com/foobar/hello%2房錢0world

nginx變量 $uri: http://example.com/foobar/hello worl廠有d

nginx變量 $request_uri: http://example.com/foobar/hello%可聽20world

原始的 url 内容和 $request_uri 内容一緻。

要求驗證簽名時(shí)使用 $request_u校木ri ,此值為原始值,内容是正确的經(jīng)過(g微風uò) url encode 的内容,所以 path 不用編碼。

服務端不能(néng)使用 $uri 獲取各參數,然後(hòu)再調用 ur工化l_encode 來獲取待簽名的 pat如北h。path url_encode 後書報(hòu)再 url_decode,獲得的内容與原 path 可能(n路個éng)不一樣(yàng)。

http://example.com/foobar/hello不吧+world
http://example.com/foobar/hel遠明lo%2Bworld
http://example.com/foobar/he畫答llo%2bworld

以上三個url都(dōu)是合遠關法的訪問同一資源的鍊接。相同 key 、T,執行簽名後(hòu)會(hu金如ì)有三個不同的值。 %2b url_decode 再 url_enc朋白ode 可能(néng)得到(dào) %2B,導緻簽名不一緻。

以上是否解決了您的問題
  


Copyright © 2006-2022 9557.com. 票電All Rights Reserved票空. 廈門千雲信息科技有限公司版權所有 常年律師顧問: 會我 福建瀛坤律師事(shì)務所