密码MD5编码没有盐。怎么解决?

时间:2013-04-26 16:52:24

标签: security md5 salt

我有一个系统,用户可以通过Facebook或普通表格注册。如果用户通过Facebook注册,我的系统会生成一个随机密码,只是为了允许用户在没有Facebook的情况下登录,如果他愿意的话。如果用户使用常规表单注册,他可以键入他想要的任何密码。在这两种方式中,密码都被编码为MD5哈希,但没有salting。我知道,这是不安全的,这就是我在这里的原因。

我不知道将密码转换为安全密码的最佳策略......首先我想保留MD5不安全的密码,当用户登录时,我可以匹配没有盐的密码,盐 - 它,然后更新数据库。但它并没有解决我的问题,因为系统仍会接受不安全的密码。除此之外,用户仍然可以使用facebook登录,巫婆不允许我更新他们的密码(因为他没有使用它)。

那么,有没有人想要最小化影响而不是强迫每个人更新密码?

谢谢!

1 个答案:

答案 0 :(得分:0)

所以,我已经做了以下行动来解决我的问题。

  1. 在users表中创建了一个“LastPasswordChange”列。
  2. 当用户更改密码时,该字段将使用当前日期更新,此外,还会向用户发送一封电子邮件,通知密码已更改,并提供一个链接以便在出现错误时将其恢复(由于可能劈)。
  3. 电子邮件允许用户登录并设置新密码,而不知道上次使用的密码。
  4. 当用户使用当前密码登录时,它会查看LastPasswordChange字段,如果为null,则允许登录而不使用salt。
  5. 他/她以任何方式登录(Facebook或登录/通过),系统查看LastPasswordChange字段,如果它为null,则系统要求用户将当前密码更改为其他密码(与旧密码不匹配)没有盐)。
  6. 就是这样。