1

我正在使用一個系統(基於PHP,但對此不重要),它保持用戶密碼保存在數據庫中。但是,就安全性而言,我需要考慮如何保護密碼並確保密碼傳輸機制的完整性。密碼存儲和安全密碼傳輸

我選擇在數據庫中使用salt進行哈希處理的密碼,但是從密碼從瀏覽器到服務器(將用於非安全連接),我不確定我如何檢查它。

所以我的問題是,有沒有人知道任何安全的機制,可以允許客戶端發送密碼,然後可以比較數據庫(鹽用鹽)沒有密碼是明文在任何地方,除了客戶端瀏覽器內存?

回答

3

在整個行業中完成的方式是通過SSL通道以明文形式發送密碼。

也就是說,您必須確保登錄頁面及其加載的所有資源通過HTTPS提供。這將保護傳輸中的密碼。一旦密碼進入另一側,就可以對數據庫中的數據進行散列和比較。

發送散列或其他深奧的解決方案(尊重你的「只在瀏覽器內存中以明文形式輸入的密碼」)不會做任何事情,而只是交換一個祕密 - 攻擊面保持不變。 您可以在客戶端混淆密碼並添加基於時間的組件,但由於所有邏輯必須位於客戶端上,因此可以顛倒過來,因此您只需添加「模糊」(通過隱藏並不值得安全)它)。

+0

是的,這就是我的想法,但只是寫了一個答案,使用RSA提供相當數量的安全性,但在理想的世界中,我想要SSL – topherg

+1

在您自己的代碼中實現加密真的是非常糟糕理念。最好的情況下,你最終將獲得與通過SSL運行服務所需的40-50美元相同的安全性。在最糟糕的情況下,你最終會創造一個可怕的混亂和脆弱的服務。 – Paradoxengine