天天看點

基于timestamp+nonce的會話重放解決方案

基于timestamp+nonce的會話解決方案

timestamp解決黑客抓包重放請求超過60s的情況,超過60s的請求為非法請求。

nonce(Number used once)僅一次有效的随機字元串,要求每次請求時,該參數要保證不同,是以該參數與時間戳有關。我們把每次請求的nonce參數儲存在一個集合中,可以json格式存儲在資料庫中或緩存中,我們每次處理http請求時,首先判斷該請求的nonce參數是否在該集合中,如果存在則認為是非法請求。nonce可以是時間戳的16進制,也可以是用戶端的ip位址,mac位址等資訊hash之後的參數。

1、用戶端首先向伺服器發送gettime請求,從伺服器擷取timestamp參數。

2、用戶端生成的sign值(timestamp+token+nonce)與用戶端生成的sign值(timestamp+token+nonce)比較,如果不相等說明資料被篡改。token通過uid從資料庫中擷取

3、相等繼續判斷時間誤差是否在60s内,如果超過60s說明非法請求。

4、若時間誤差<60s判斷nonce是否在集合内,若在集合内說明非法請求。

5、若不在集合内寫入集合内。

繼續閱讀