攻擊者傳送乙個目的主機已經接收過的包,特別是在認證的過程中,用於認證使用者身份所接收的包,來達到欺騙系統的目的,主要用於身份認證過程,破壞認證的安全性。也可利用系統中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...