2014-09-24 75 views
0

實現將用戶ID和MDG散列密碼發佈到我的服務器進行驗證的服務。驗證在我們控制之外哈希的密碼?

我們存儲使用PHP> 5.5中的password_hash()函數生成的散列密碼。

有什麼辦法來驗證MD5哈希和我們的哈希指向相同的密碼?

通常情況下,密碼將通過登錄表單提交給我們,我們將使用password_verify()進行驗證,但沒有明文密碼的情況下我有點遺憾。

+1

除非你使用相同的哈希機制,種子等。 – 2014-09-24 17:56:55

+0

傑伊的權利。您可以保留密碼行,同時讓用戶使用新的散列方法更新其密碼(*強制爲*)。新密碼欄可以標記爲「已驗證」。然後,使用WHERE子句爲'WHERE pw ='verified''設置登錄。 – 2014-09-24 17:57:50

+0

查看此答案http://stackoverflow.com/a/18906896/您可以檢查MD5密碼並將其轉換爲新的'password_hash() '方法。您可以通過Google搜索「將md5轉換爲password_hash php」進一步研究。 – 2014-09-24 18:06:59

回答

0

通常情況下,密碼將通過登錄表單提交給我們,我們會 與password_verify(),但沒有以純文本 密碼我在一個小的損失的核實。

只要您使用安全傳輸(SSL),這不會是一個問題。這是完成這個的標準方式。否則,您需要在客戶端實現password_hash()使用的哈希機制。這樣做不會使你的安全方案更好。它仍然易受replay attacks

此外,你應該遠離MD5,因爲​​3210。

+0

我不認爲這就是問題所在。我認爲這更多的是將MD5轉換爲'password_hash()'方法。 ['見我的評論'](http://stackoverflow.com/questions/26023415/verify-password-that-is-hashed-outside-our-control#comment40760706_26023415)在OP的問題。我確定OP知道MD5漏洞,這就是爲什麼要轉到'password_hash()'。 – 2014-09-24 18:08:26

+0

他的問題部分表明他發佈了用戶證書的MD5哈希。這是非常不安全的,所以他應該被警告這個事實。我解決了他對以純文本形式發送證書的擔憂,並提出了一個更好的最佳實踐解決方案。 – Samuel 2014-09-24 18:10:34

+0

OP => *「我們存儲使用PHP> 5.5中的password_hash()函數生成的哈希密碼*」 - 重新讀取問題。起初我也有點困惑。 – 2014-09-24 18:11:17

0

你不能解密它。但是如果你可以改變生成密碼的機制,你可以參考這個post