會話重放攻擊與完整性校驗解決方案

2021-10-05 17:18:09 字數 3023 閱讀 2339

攻擊者傳送乙個目的主機已經接收過的包,特別是在認證的過程中,用於認證使用者身份所接收的包,來達到欺騙系統的目的,主要用於身份認證過程,破壞認證的安全性。也可利用系統中post請求資料報未針對單個請求設定有效的驗證引數,導致會話請求可以重放,無限制的向資料庫中插入海量資料,或無限制的上傳檔案到系統中,造成資源浪費。

後端生成當前系統時間

//用於獲取當前系統時間,以毫秒為單位

(value=

"querycurrenttime"

,method=requestmethod.get)

public map

querycurrenttime()

在vue中,request.js中統一進行處理,

import request from

'@/utiils/request.js'

import cryptojs from

'crypto-js'

//隨機數

letguid

=function()

)}// 請求***

service.interceptors.request.

use(

async

(config)

=>

const req =

//async await 同步

await

request

(req)

.then

(response =>

else})

params = paramsvalues.

join

('-')}

}// console.log(params)

// 生成隨機數uuid

let uid = uuid.v4(

)// md5簽名

let sign = cryptojs.

md5(timestamp + uid + params + saltvalue)

config.headers.timestamp = timestamp

config.headers.sign = sign

config.headers.replaytoken = uid

})}return config },

error =>

)

配置過濾器的啟動順序

@configuration

public

class

filterconfig

@bean

public filterregistrationbean filterregistrationbean (

)}

異常處理類

public

class

exceptioncommonutils

//用來響應資訊

}

通過md5加密,生成sign

public

class

integritychecking

①獲取前台傳入的時間,token以及前台經過md5加密的sign值,

②時間+token+鹽值 進行md5加密和sign值對比,不一致說明被資料篡改,觸發完整性校驗

③計算時間差, 小於等於60秒內的sign放入到redis中儲存有效時間為1小時, 每次請求都去判斷key是否存在,如存在,則是重放攻擊

④如請求時間超過60秒,則判定為請求超時,也是重放攻擊

public

class

formfilter

implements

filter

@override

public

void

dofilter

(servletrequest arg0,servletresponse arg1,filterchain arg2)

throws ioexception,servletexception

else

}elseif(

"get"

.equals

(req.

getmethod()

))}//去掉最後乙個字元if(

!"".equals

(str.

tostring()

)&& str.

length()

>0)

// 對比sign值

string parsign = integritychecking.

getsign

(timestamp,ratoken,strstring);if

(!sign.

equals

(parsign)

)//計算時間差

long parseint = long.

parselong

(timestamp)

;long currenttimemills = system.

currenttimemills()

;long reqtime =

(currenttimemills - parseint )

;//60秒內的sign放入redis中

if(reqtime <=

60000

)else

}else

arg2.

dofilter

(req,response);}

else

}catch

(runtimeexception e)

catch

(exception e)

}}

檔案完整性校驗

什麼是 完整性校驗 所謂的 完整性校驗 顧名思義,就是檢查檔案是否完整。那麼,什麼情況下會導致檔案不完整捏?大概有如下幾種情況。1.感染病毒 比方說你的系統中了病毒,病毒感染了某個軟體安裝包或者某個可執行程式。那麼該檔案的完整性就被破壞了。雜湊演算法 雜湊演算法 掃盲 什麼是 雜湊演算法 雜湊演算法...

檔案完整性校驗

什麼是 完整性校驗 所謂的 完整性校驗 顧名思義,就是檢查檔案是否完整。那麼,什麼情況下會導致檔案不完整捏?大概有如下幾種情況。1.感染病毒 比方說你的系統中了病毒,病毒感染了某個軟體安裝包或者某個可執行程式。那麼該檔案的完整性就被破壞了。雜湊演算法 雜湊演算法 掃盲 什麼是 雜湊演算法 雜湊演算法...

網路資訊保安之請求重放校驗 防會話重放攻擊

1 客戶端身份認證或第一次訪問時,向服務端請求當前系統時間systime 2 客戶端接收服務端返回的當前系統時間systime,並計算出與當前客戶端時間clienttime的差值difftime systime clienttime,後續時間戳引數均帶入客戶端時間 該差值,即時間戳為timestam...