Asp.net
重置 ASP.NET 密碼 - 安全問題?
我已經看到有關此問題的各種問題,但有幾個問題尚未提出。如果使用者忘記了他們的密碼,我希望他們能夠僅使用他們的電子郵件地址來重置它(即沒有安全問題/答案)。密碼儲存為加鹽雜湊,因此無法恢復。相反,我只是希望使用者在確認他們已請求重置後輸入新密碼。
提到的一種常見方法是簡單地:
創建一個隨機 Guid/加密強隨機數
將包含隨機數的唯一 URL 發送到使用者的電子郵件地址
確認後,要求使用者更改密碼
但是,這不是容易受到
MITM攻擊嗎?如果通過 Internet 向電子郵件發送臨時密碼是不安全的,那麼這樣做與簡單地發送攻擊者可以導航到的唯一 URL 有什麼區別?我是否錯過了使該系統更安全的關鍵步驟(或者是否有更好的重置密碼的方法)?謝謝
如果您正確地建構了您的雜湊,則 URL 點擊必須來自請求重置的 IP 地址。這將要求 MITM 欺騙 IP 和/或偽造標頭。雖然這是可能的,但您可以辨識相關係統的雜湊值越獨特,“結束”雜湊值就越困難。
還建議該 guid 是某些標準的單向雜湊。也可以使用私鑰解鎖的公鑰加密請求中的系統數據,這樣當點擊 url 時,相同的公共加密系統數據必須伴隨散列,並且唯一可以解密這些值的系統是保存在伺服器上的私鑰。基本上是散列的偽 PKI 附件。