2012-04-26 121 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最可能)是更安全的方式。在这种情况下也检查关键字“盐”。

只需为它们生成一个新的临时密码,并在第一次登录后强制它们进行更改。这是通常的做法,有很好的理由。不要像一些大的软件公司一样,并且重视安全性。

相关问题