• api介面由於需要供第三方服務呼叫,所以必須暴露到外網,並提供了具體請求位址和請求引數
為了防止被第別有用心之人獲取到真實請求引數後再次發起請求獲取資訊,需要採取很多安全機制;
• 1.首先: 需要採用https方式對第三方提供介面,資料的加密傳輸會更安全,即便是被破解,也需要耗費更多時間
• 2.其次:需要有安全的後台驗證機制【本文重點】,達到防引數篡改+防二次請求,防止重放攻擊必須要保證請求僅一次有效;
客戶端使用約定好的秘鑰對傳輸引數進行加密,得到簽名值signature,並且將簽名值也放入請求引數中,傳送請求給服務端
服務端接收客戶端的請求,然後使用約定好的秘鑰對請求的引數(除了signature以外)再次進行簽名,得到簽名值autograph。
服務端對比signature和autograph的值,如果對比一致,認定為合法請求。如果對比不一致,說明引數被篡改,認定為非法請求。
防二次請求
• 基於timestamp的方案
• 基於nonce的方案
• 基於timestamp和nonce的方案(推薦)
介面防重放
以前總是通過timestamp來防止重放攻擊,但是這樣並不能保證每次請求都是一次性的。今天看到了一篇文章介紹的通過nonce number used once 來保證一次有效,感覺兩者結合一下,就能達到乙個非常好的效果了。重放攻擊是計算機世界黑客常用的攻擊方式之一,所謂重放攻擊就是攻擊者傳送乙個目的...
API防重放機制
我們在設計介面的時候,最怕乙個介面被使用者擷取用於重放攻擊。重放攻擊是什麼呢?就是把你的請求原封不動地再傳送一次,兩次.n次,一般正常的請求都會通過驗證進入到正常邏輯中,如果這個正常邏輯是插入資料庫操作,那麼一旦插入資料庫的語句寫的不好,就有可能出現多條重複的資料。一旦是比較慢的查詢操作,就可能導致...
API的防重放機制
api的防重放機制 我們在設計介面的時候,最怕乙個介面被使用者擷取用於重放攻擊。重放攻擊是什麼呢?就是把你的請求原封不動地再傳送一次,兩次.n次,一般正常的請求都會通過驗證進入到正常邏輯中。如果這個正常邏輯是插入資料庫操作,那麼一旦插入資料庫的語句寫的不好,就有可能出現多條重複的資料。一旦是比較慢的...