2014-11-03 53 views
0

在我的數據庫中,我保存了密碼與比較兩個哈希有bcrypt(PHP)

password_hash($user->getPassword(), PASSWORD_BCRYPT); 

登錄表單中,用戶輸入此密碼,我編碼的密碼到bcrypt串並提交加密的密碼(因爲我沒有SSL)到服務器。

所以我的問題是可以比較使用bcrypt生成的兩個散列?

+1

不可以,除非他們使用完全相同的鹽和成本參數。 – Mike 2014-11-03 19:43:24

+0

好吧,這意味着如果我使用相同的鹽和成本,這將是可能的?但是我認爲在javascript中顯示鹽和成本非常糟糕... – user2831042 2014-11-03 19:46:44

+1

@ user2831042鹽和成本不是敏感項目。您應該擔心您正在爲該網站提供服務,並且您的關鍵安全功能不可加密且易受攻擊。 – ceejayoz 2014-11-03 19:47:31

回答

5

在登錄表單中,用戶輸入此密碼,然後將密碼編碼爲bcrypt字符串,並將密碼(因爲我沒有SSL)提交給服務器。

停止你在做什麼,去購買SSL證書。有幾個景點(https://www.startssl.com/就是其中一個),您可以免費獲得一個景點,或者您可以向Namecheap等人支付7美元。

您已經實施了錯覺的安全性。在客戶端散列密碼不會提供任何有意義的安全優勢 - 任何MITM攻擊者只需將JavaScript的調整副本提供給他們正在攻擊的人(或者只是截取散列密碼,這實質上就是用戶的真實密碼方案)。

+0

確定thx爲您的答案我會購買SSL證書:-) – user2831042 2014-11-03 19:54:22