web api的設計 防重放攻擊

2021-09-25 22:17:25 字數 1024 閱讀 5466

重放攻擊(replay attacks)

指攻擊者傳送乙個目的主機已接收過的包,來達到欺騙系統的目的,主要用於身份認證過程,破壞認證的正確性。重放攻擊。

防重放攻擊中,最重要的手段是給訊息打上乙個唯

一、不可以重新生成的編號,保證這個編號只能使用一次。

一、利用timestamp。

在引數中加入timestamp=***xx. 並且加入到簽名中簽名的方法。

當伺服器接收到請求之後,會首先檢查簽名是否有效,如果有效,則對比時間戳是否在一定時間內,比如60s(需要對伺服器和客戶端時間進行全域性同步),則請求有效,否則請求過期。

這種方法可以將重放攻擊的可能時間縮短到設定的時間段(60s),但是在60s之內,還是不能杜絕重放攻擊。需要進行公升級修改。

二、利用timestamp+nonce

在加入timestamp的同時,客戶端生成乙個隨機數rand,而後生成乙個引數nonce = md5(timestamp+rand),放入到請求串中。

//請求的引數

伺服器在接收到請求後,首先進行簽名驗證,然後快取(如redis)中檢查,這個nonce是否存在,如果不存在,則建立這個key,設定失效時間為timestamp的有效時間(60s),驗證通過;如果存在,則這個nonce已經被使用過了,則判定為重放攻擊。

server偽**如下:

if(check_sign())       

}else

三、安全分析

演算法二中,由於使用了簽名機制,可以保證引數不被更改,並且攻擊者不能構造出合法的請求串和對應的簽名。nonce的生成是取決於客戶端的時間戳和隨機數,在失效時間內,客戶端生成兩個同樣的nonce(相同的timestamp和相同的隨機數)屬於小概率時間,基本不可能發生,所以演算法二在防重放攻擊上是安全的。

初級web api的設計 二) 防重放攻擊

在針對資料系統的攻擊中,重放攻擊是最常見的攻擊方式,api的設計中需要特別考慮設計好如何防範重放攻擊。重放攻擊 replay attacks 指攻擊者傳送乙個目的主機已接收過的包,來達到欺騙系統的目的,主要用於身份認證過程,破壞認證的正確性。重放攻擊。防重放攻擊中,最重要的手段是給訊息打上乙個唯 一...

防重放攻擊

以前總是通過timestamp來防止重放攻擊,但是這樣並不能保證每次請求都是一次性的。今天看到了一篇文章介紹的通過nonce number used once 來保證一次有效,感覺兩者結合一下,就能達到乙個非常好的效果了。重放攻擊是計算機世界黑客常用的攻擊方式之一,所謂重放攻擊就是攻擊者傳送乙個目的...

API設計中防重放攻擊

否,加密可以有效防止明文資料被監聽,但是卻防止不了重放攻擊。我們在設計介面的時候,最怕乙個介面被使用者擷取用於重放攻擊。重放攻擊是什麼呢?就是把你的請求原封不動地再傳送一次,兩次.n次,一般正常的請求都會通過驗證進入到正常邏輯中,如果這個正常邏輯是插入資料庫操作,那麼一旦插入資料庫的語句寫的不好,就...