api介面安全

2021-08-13 00:58:32 字數 1237 閱讀 2257

介面的安全性主要圍繞token、timestamp和sign三個機制展開設計,保證介面的資料不會被篡改和重複呼叫,下面具體來看:

token授權機制:使用者使用使用者名稱密碼登入後伺服器給客戶端返回乙個token(通常是uuid),並將token-userid以鍵值對的形式存放在快取伺服器中。服務端接收到請求後進行token驗證,如果token不存在,說明請求無效。token是客戶端訪問服務端的憑證。

時間戳超時機制:使用者每次請求都帶上當前時間的時間戳timestamp,服務端接收到timestamp後跟當前時間進行比對,如果時間差大於一定時間(比如5分鐘),則認為該請求失效。時間戳超時機制是防禦dos攻擊的有效手段。

簽名機制:將 token 和 時間戳 加上其他請求引數再用md5或sha-1演算法(可根據情況加點鹽)加密,加密後的資料就是本次請求的簽名sign,服務端接收到請求後以同樣的演算法得到簽名,並跟當前的簽名進行比對,如果不一樣,說明引數被更改過,直接返回錯誤標識。簽名機制保證了資料不會被篡改。

拒絕重複呼叫(非必須):客戶端第一次訪問時,將簽名sign存放到快取伺服器中,超時時間設定為跟時間戳的超時時間一致,二者時間一致可以保證無論在timestamp限定時間內還是外 url都只能訪問一次。如果有人使用同乙個url再次訪問,如果發現快取伺服器中已經存在了本次簽名,則拒絕服務。如果在快取中的簽名失效的情況下,有人使用同乙個url再次訪問,則會被時間戳超時機制攔截。這就是為什麼要求時間戳的超時時間要設定為跟時間戳的超時時間一致。拒絕重複呼叫機制確保url被別人截獲了也無法使用(如抓取資料)。

整個流程如下:

1、客戶端通過使用者名稱密碼登入伺服器並獲取token

2、客戶端生成時間戳timestamp,並將timestamp作為其中乙個引數

3、客戶端將所有的引數,包括token和timestamp按照自己的演算法進行排序加密得到簽名sign

4、將token、timestamp和sign作為請求時必須攜帶的引數加在每個請求的url後邊(http://url/request?token=123×tamp=123&sign=123123123)

5、服務端寫乙個過濾器對token、timestamp和sign進行驗證,只有在token有效、timestamp未超時、快取伺服器中不存在sign三種情況同時滿足,本次請求才有效

在以上三中機制的保護下,

如果有人劫持了請求,並對請求中的引數進行了修改,簽名就無法通過;

如果有人使用已經劫持的url進行dos攻擊,伺服器則會因為快取伺服器中已經存在簽名或時間戳超時而拒絕服務,所以dos攻擊也是不可能的;

API 介面安全

什麼是時序攻擊以及如何防範時序攻擊?時序攻擊屬於側通道攻擊 旁路攻擊 side channel attack 側通道攻擊是指利用通道外的資訊,比如加解密的速度 加解密時晶元引腳的電壓 密文傳輸的流量和途徑等進行攻擊的方式,乙個詞形容就是 旁敲側擊 舉乙個最簡單的計時攻擊的例子,某個函式負責比較使用者...

api介面安全

api介面可以分兩種一種是需要登入才能獲取資料,使用的是token 使用jwt加密技術加密使用者資訊,設定token的過期時間一般是2個小時,提高token的安全性,然後把token返回給客戶端,客戶端可以將token存入localstorage或者cookie中,cookie和localstora...

api 介面安全

不同於業務引數,系統引數是無論如何都要傳遞給後端的引數。傳遞時,不與業務引數混在一起,而是在請求header中傳輸。後端會為每個第三方 呼叫方設定乙個秘鑰,需要保密,只有後端 與第三方 呼叫方自己知道。該秘鑰用於在呼叫界面前,生成簽名,後端在收到請求後,驗證簽名。簽名由前端生成,並在請求header...