[Security] 在將密碼發送到服務器端之前,我應該散列密碼嗎?


Answers

由於它是通過HTTPS,絕對沒有散列發送密碼(通過HTTPS它不是明文)。 而且,如果您的應用程序依賴於HTTPS來保持其內容安全,那麼在通過HTTPS發送密碼之前散列密碼是沒有用處的(例如,如果攻擊者可以解密線路上的數據,則無論如何都會被擰緊)

Question

我注意到大多數站點通過HTTPS將密碼作為純文本發送到服務器。 如果不是我把密碼的散列發送到服務器,有什麼好處嗎? 會更安全嗎?




通過發送一個散列完全破壞散列的目的,因為攻擊者可以簡單地發送散列並忘記密碼。 簡而言之,以明文形式使用哈希進行驗證的系統是開放的,只能通過網絡嗅探進行妥協。




如果連接到https服務器,則應該加密服務器和瀏覽器之間的數據流。 數據在發送之前和接收之後只是純文本。 維基百科的文章




如果您打算通過HTTPS替換明碼密碼,並通過HTTP使用散列密碼,那麼您就會遇到麻煩。 打開通信通道時,HTTPS將生成一個隨機的共享事務密鑰。 這很難破解,因為你幾乎不能強制用於(相對)短期交易的共享密鑰。 而你的散列可以只是嗅,離線,在彩虹表中抬頭或只是長時間的強暴。

但是,通過HTTPS發送的基本客戶端密碼混淆(不是哈希)確實具有一定的價值。 如果我沒有弄錯,這個技術實際上是被一些銀行使用的。 這種技術的目的不是為了保護密碼免受電線的嗅探。 相反,這是為了阻止密碼被愚蠢的間諜工具和瀏覽器插件抓取每一個他們看到的HTTPS GET / POST請求。 我已經看到從惡意網站捕獲的日誌文件,這是從用戶會話中捕獲的400MB隨機GET / POST事務。 您可以想像,僅使用HTTPS的網站會在日誌中顯示明文密碼,但具有非常基本模糊(ROT13)的網站也會顯示不會立即使用的密碼。