解決用戶登錄、注冊傳輸中賬號密碼的安全泄露問題


方案是:HASH + Salt

HASH + Salt 的操作也稱為兩次 HASH,其原理是:第一次 HASH 操作進行身份的初次鑒權,網站會返回一個隨機數(Salt,鹽值),客戶端通過服務器返回的隨機數以及協商好的規則進行第二次 HASH 操作,將操作結果發送給服務器,服務器也通過相同的方法進行操作,如果兩次結果相同,那么就鑒權成功。

此種方式下,服務器也不存儲明文密碼,存儲的是密碼第一次 HASH 后的結果。即使該值被泄露,也不會泄露明文密碼。

 

發起兩次請求

1、明文傳輸用戶名 例如:caoke

不存在-》登錄失敗

存在-》返回用戶名的hash值。例如:1eea229fd1ea8ac0

2、對"用戶名的hash值+密碼"進行md5,產生hash,明文傳輸用戶名、密碼hash值。例如:md5("1eea229fd1ea8ac"+"123456") =838cfa0690f2198b

后端對用戶名、密碼hash進行比對

存在-》登錄成功 

不存在-》密碼錯誤

傳輸過程中只會泄露:caoke、838cfa0690f2198b、838cfa0690f2198b,而不會泄露密碼123456

注冊過程也是這個方案

 

另一種方案

博客園用的是rsa的方式對用戶名、密碼加密傳輸,這也是一種方式 ,具體可以看看encryptjs庫,前端傳入公鑰,加密,然后傳輸給服務器,服務器用私鑰解密。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM