2012-04-26 86 views
1

我正在實施一個登錄腳本,其中包含能夠通過電子郵件向用戶發送用戶名和密碼(存​​儲在MySQL數據庫中)的功能,以防他們忘記了密碼。腳本的默認行爲是發送用戶名和密碼,即生成臨時密碼。在生成電子郵件時解密MySQL密碼以通知用戶密碼

我想知道是否有辦法通過電子郵件發送當前密碼,以便用戶不必重置它。目前密碼已加密,但我無法弄清楚這是如何完成的。該密碼的格式爲:

* 2D4CE9DDA883E4FBE985A3439D9DCDCBD88367A0

所以,當我嘗試發送當前密碼,加密的密碼被髮送。

有沒有辦法在發送提醒郵件時解密密碼,還是必須保持原樣?

感謝,

尼克

+1

不,不要通過電子郵件發送當前密碼 - 這會帶來安全風險。無論如何您都無法(輕鬆)取消散列值。讓他們每次都重置密碼。 – halfer 2012-04-26 15:42:56

+1

密碼應該** **散列**,不加密。這應該是不可能的。 – SLaks 2012-04-26 15:42:57

+0

密碼是加密的還是鹽漬/散列的?我猜測後者。 – dsolimano 2012-04-26 15:43:49

回答

6

你真的不應該這樣做,即使是可能的(我懷疑)。電子郵件是非常不安全的,而用戶往往會重複使用密碼:

  1. 用戶來了一個密碼,並用它在大量網站,包括你的
  2. 你在它
  3. 他們的密碼發送忘記密碼電子郵件
  4. 攻擊者intercepts電子郵件和現在有用戶在每個網站的密碼,他們使用

只要給他們和其他人一樣新的密碼(和鼓勵或要求他們改變它在下次登錄時)。

+0

謝謝澄清。我會堅持使用默認系統。 – Nick 2012-04-26 16:01:35

4

密碼可能是散列的,未加密。所以不,你不能解密他們。如果它們實際上是加密的,則需要密鑰來解密它們。無論如何,哈希(SHA1最可能)是更安全的方式。在這種情況下也檢查關鍵字「鹽」。

只需爲它們生成一個新的臨時密碼,並在第一次登錄後強制它們進行更改。這是通常的做法,有很好的理由。不要像一些大的軟件公司一樣,並且重視安全性。

相關問題