全部產品
Search
文件中心

HTTPDNS:鑒權解析介面

更新時間:Jul 13, 2024

1. 背景

為了避免CC攻擊刷費用問題對計費系統的影響,設計了HTTPDNS鑒權機制。

2. 鑒權方案

由於老使用者已經發布了產品,採用的是非鑒權功能方式接入,這部分產品的使用者需要繼續可以訪問非鑒權介面。

所以我們開放一個新的鑒權介面,產品新版本可以逐漸遷移至新介面,當舊app使用者減少到一定量後,可以關閉非鑒權介面,以避免對計費系統的影響,如下圖所示。

鑒權

2.1 老使用者移轉方案

  • 關閉非鑒權介面,會導致老版本的存量正在使用產品的使用者,無法訪問HttpDNS服務。

  • 引導老使用者更新版本,逐漸遷移至鑒權介面。

  • 非鑒權介面存量產品使用者下降,直至可以接受關閉非鑒權介面帶來的損失的時候,可以手動關閉非鑒權介面。

2.2 新使用者使用方式情節

  • 為避免鑒權帶來的額外接入成本,非鑒權介面預設是開啟的。

  • 如果僅需要鑒權介面功能,請手動關閉非鑒權存取權限。

2.3 非鑒權介面開關的管理

  • 開啟時,可能會引入安全隱患。

  • 只有關閉非鑒權介面開關時,才能避免被攻擊導致的費用。

3. 簽名產生和鑒權機制

3.1 簽名產生演算法及樣本

新鑒權介面

重要
  • 其中的 {account_id} 需要替換為使用者的HTTPDNS Account ID,在HTTPDNS控制台上可以獲得這個ID。

  • 鑒權介面可以添加IP參數,是否添加該參數及參數內容不影響簽名的計算。

簽名演算法

sign = md5sum( host-secret-timestamp )

鑒權欄位說明

欄位

描述

host

需要被解析的host,與URL中的host參數取同樣的值。

secret

由伺服器負責產生,查看方式:控制台 > 鑒權配置 > 鑒權secretkey。

timestamp

簽名失效時間,1970年1月1日以來的秒數(整形正數,固定長度10)。

簽名樣本

此方案優缺點

  • 用戶端時間不同

  • 密鑰放在用戶端丟失有風險

  • 無需去伺服器拉取

3.2 鑒權響應

  • 鑒權成功時,HTTP響應的狀態代碼為200,響應結果同原HTTPDNS響應。

  • 鑒權失敗時,HTTP響應的狀態代碼為403400,響應結果同時也返回具體的錯誤碼,響應結果用JSON格式表示。

     { "code": "InvalidSignature" }

3.3 狀態代碼說明

HTTP狀態代碼

錯誤碼

描述

403

SignatureExpired

時間戳記已到期

403

InvalidSignature

簽名不正確

400

InvalidDuration

簽名有效期間過長(最長86400秒)

400

InvalidSignature

簽名格式不正確

400

InvalidTimestamp

時間戳記格式不正確

400

AccountNotExists

賬戶不存在或被禁用