api 介面安全

2021-10-24 02:22:32 字數 1443 閱讀 5856

不同於業務引數,系統引數是無論如何都要傳遞給後端的引數。傳遞時,不與業務引數混在一起,而是在請求header中傳輸。

後端會為每個第三方/呼叫方設定乙個秘鑰,需要保密,只有後端**與第三方/呼叫方自己知道。該秘鑰用於在呼叫界面前,生成簽名,後端在收到請求後,驗證簽名。

簽名由前端生成,並在請求header中傳輸給後端。只有在前端生成的簽名通過了後端的驗證後,該請求才算有效。

系統引數,即為「與業務無關」的引數。

前端呼叫任何乙個後端介面時,均要在request header中傳遞如下系統引數:

引數名資料型別

必輸含義

備註string

y呼叫方/第三方的系統標識

如,hlg(代表火龍果)

timestamp

long

y呼叫介面的時間戳

如,1598776868036

sign

string

ymd5簽名串

如,0ca175b9c0f726a831d895e532182008

按請求頭和請求體分組,每組按引數名排序,並帶上引數值,生成乙個字串。

在步驟1生成的字串後,追加秘鑰(secret_key),形成乙個新串。

對步驟2生成字串做md5加密,生成sign值,附帶在header中。

引數名引數值

hlgtimestamp

1598776868036

username

張三age

18birthday

2020-08-30

mobilephone

md5加密,得到sign=1ff786ca7dbae4c5971743212c722ab7。

張三age

18birthday

1990-08-18

mobilephone

分別在request header和request body中獲取到系統引數和業務引數。

可以選擇把這兩組引數分別放在某個集合容器裡,例如treemap,因為這個容器是有序的。

對比前端傳來的sign,與後端自己生成的sign是否相同。

如果相同,流程繼續;如果不同,返回驗籤失敗。

如果驗籤成功,則需要進一步驗證有效期。

取出前端傳來的系統引數timestamp,與當前時間戳對比。

如果差距在5min之內,認為是有效請求;否則,認為是過期請求,返回請求過期。

api介面安全

介面的安全性主要圍繞token timestamp和sign三個機制展開設計,保證介面的資料不會被篡改和重複呼叫,下面具體來看 token授權機制 使用者使用使用者名稱密碼登入後伺服器給客戶端返回乙個token 通常是uuid 並將token userid以鍵值對的形式存放在快取伺服器中。服務端接收...

API 介面安全

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

api介面安全

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