背景
• API接口由於需要供第三方服務調用,所以必須暴露到外網,並提供了具體請求地址和請求參數
為了防止被第別有用心之人獲取到真實請求參數后再次發起請求獲取信息,需要采取很多安全機制;
安全策略
• 1.首先: 需要采用https方式對第三方提供接口,數據的加密傳輸會更安全,即便是被破解,也需要耗費更多時間
• 2.其次:需要有安全的后台驗證機制【本文重點】,達到防參數篡改+防二次請求,防止重放攻擊必須要保證請求僅一次有效;
防參數篡改
- 客戶端使用約定好的秘鑰對傳輸參數進行加密,得到簽名值signature,並且將簽名值也放入請求參數中,發送請求給服務端
- 服務端接收客戶端的請求,然后使用約定好的秘鑰對請求的參數(除了signature以外)再次進行簽名,得到簽名值autograph。
- 服務端對比signature和autograph的值,如果對比一致,認定為合法請求。如果對比不一致,說明參數被篡改,認定為非法請求。
防二次請求
• 基於timestamp的方案
• 基於nonce的方案
• 基於timestamp和nonce的方案(推薦)