根據百科的解釋:javascript
重放攻擊(Replay Attacks)又稱重播攻擊、回放攻擊或新鮮性攻擊(Freshness Attacks),是指攻擊者發送一個目的主機已接收過的包,來達到欺騙系統的目的,主要用於身份認證過程,破壞認證的正確性。 它是一種攻擊類型,這種攻擊會不斷惡意或欺詐性地重複一個有效的數據傳輸,重放攻擊能夠由發起者,也能夠由攔截並重發該數據的敵方進行。攻擊者利用網絡監聽或者其餘方式盜取認證憑據,以後再把它從新發給認證服務器。從這個解釋上理解,加密能夠有效防止會話劫持,可是卻防止不了重放攻擊。重放攻擊任何網絡通信過程當中均可能發生。重放攻擊是計算機世界黑客經常使用的攻擊方式之一,它的書面定義對不瞭解密碼學的人來講比較抽象。前端
「時戳」──表明當前時刻的數 基本思想──A接收一個消息當且僅當其包含一個對A而言足夠接近當前時刻的時戳 原理──重放的時戳將相對遠離當前時刻 時鐘要求──通訊各方的計算機時鐘保持同步 處理方式──設置大小適當的時間窗(間隔),越大越能包容網絡傳輸延時,越小越能防重放攻擊 適用性──用於非鏈接性的對話(在鏈接情形下雙方時鐘若偶然出現不一樣步,則正確的信息可能會被誤判爲重放信息而丟棄,而錯誤的重放信息可能會看成最新信息而接收)java
通訊雙方經過消息中的序列號來判斷消息的新鮮性 要求通訊雙方必須事先協商一個初始序列號,並協商遞增方法node
「現時」──與當前事件有關的一次性隨機數N(互不重複便可) 基本作法──指望從B得到消息的A 事先發給B一個現時N,並要求B應答的消息中包含N或f(N),f是A、B預先約定的簡單函數 原理──A經過B回覆的N或f(N)與本身發出是否一致來斷定本次消息是否是重放的 時鐘要求──無 適用性──用於鏈接性的對話 重放攻擊是對協議的攻擊中危害最大、最多見的一種攻擊形式。web
上述流程看似安全,認爲傳輸過程當中的密碼是md5以後的,即便被監聽截取到,因爲md5的不可逆性,密碼明文也不會泄露。其實否則!監聽者無需解密出密碼明文便可登陸!監聽者只需將監聽到的url(如:http://****/login.do?method=login&password=md5以後的密碼&userid=登陸帳號)重放一下,便可冒充你的身份登陸系統。數據庫
該登陸方式,即便登陸請求被監聽到,回放登陸URL,因爲隨機碼不匹配(監聽者的session中的隨機碼與被監聽者的session中的隨機碼相同機率可忽略),沒法登陸成功。 該登陸方式,因爲傳輸的密碼是原密碼md5以後與隨機碼再次md5以後的結果,即便監聽者採用暴力破解的方式,也很難解密出密碼明文。後端
考慮到密碼輸入的方便性,好多用戶的密碼都設置的很短,而且不夠複雜,每每是6位數字字母組合,這樣的密碼md5以後保存到數據庫,一旦數據庫數據泄露,簡單密碼的md5結果很容易經過暴力破解的方式給解密出來,況且md5出現了這麼多年,可能已經有很多字典了!同時爲了方便用戶登陸的方便性,咱們的系統通常不可能要求用戶設置很長、很複雜的密碼!怎麼辦?加固定鹽值。安全
原文:https://cnodejs.org/topic/557c354d16839d2d539362b6服務器