安全方式重置密码或提供旧密码

Jos*_*ren 8 security passwords password-protection

处理忘记密码/密码重置的最安全方法是什么?我应该将密码通过电子邮件发送给用户吗 如果是这样,那么强迫他们重置它?或者你让他们立即重置它(不发送电子邮件)并需要一些其他信息来验证它们是谁?还是有更好的方法?

eri*_*son 17

您无法通过电子邮件将密码发送给用户,因为您不知道密码.你通过将PBKDF2或bcrypt这样的东西应用到存储中来"哈希"它,对吧?

如果您在未与帐户所有者确认密码的情况下重置密码,则攻击者可以拒绝所有者访问其帐户,至少在他检查其电子邮件之前,使用受害者的电子邮件地址请求重置.

对于许多应用程序来说足够安全的方法是通过电子邮件将链接发送给帐户所有者,其中包含随机生成的大型数字.此令牌应仅在有限时间内有效.如果所有者希望重置密码,则会点击该链接,然后将其作为帐户所有者进行身份验证.然后,帐户所有者可以指定新密码.


sim*_*nks 5

您不应该通过电子邮件发送密码.这是我用过的一步一步的过程:

  1. 为用户提供重置密码选项.
  2. 此选项为用户保存唯一标记.令牌最终到期(小时,天或天).
  3. 链接通过电子邮件发送给用户,其中包含令牌.
  4. 用户点击电子邮件链接.
  5. 如果令牌存在且未过期,则链接将加载新的密码表单.如果没有,请不要加载新密码表单.
  6. 用户设置新密码后,删除令牌并向用户发送确认电子邮件.

在设置新密码之前,旧密码应保持活动状态.不要忘记哈希和盐密码!