綜合技術--接口簽名驗證

爲了保證接口安全,通常都會在接口中添加簽名驗證機制。
驗證規則:在http請求頭中添加authorization屬性,其值爲 加密簽名+"&"+當前時間戳。
加密簽名算法以下
#1.按照請求的參數名升序排列,而後依次將參數名與參數值拼接爲字符串
舉例,請求參數列表
userName -- zhangsan
password -- 123456
排序拼接後就變成:password123456userNamezhangsan
#2.拼接時間戳與祕鑰
拼接格式:當前時間戳+排序字符串+祕鑰
備註,祕鑰是一串先後端約定好的字符串,例如132L158X139l137z,固然該字符串也能夠從數據庫取。
當前時間戳:1468310093
拼接後字符串:1468310093password123456userNamezhangsan132L158X139l137z
#3.對拼接字符串進行MD5加密
MD5(1468310093password123456userNamezhangsan132L158X139l137z),假設獲得字符串以下
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx(共32位)
#4.完整的authorization
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&1468310093算法

服務端解析以下
#5.從http的header中取出authorization 用&號做爲分隔符,分隔出加密字符串與時間戳
#6.獲取傳參
1.對傳參進行升序排列
2.拼接參數名與參數值
#7.排序字符串(解析後)拼接時間戳與祕鑰
時間戳在(#5)中拿獲得,祕鑰是先後端約定的(數據庫取也行)
#8.MD5加密
對上述字符串進行MD5加密 而後與(#5)中獲取到的加密字符串進行比對,若是比對上則執行業務邏輯處理。數據庫

每一個接口每次請求都要帶上authorization,且同一個authorization只能使用一次。所以,即便抓包工具抓到了本次請求的authorization,該authorization不能做爲下一個請求的authorization用,即該authorization對下一次請求失效,即在必定程度上保證了接口的安全。後端

相關文章
相關標籤/搜索