代码之家  ›  专栏  ›  技术社区  ›  Josh Curren

重置密码或提供旧密码的安全方法

  •  8
  • Josh Curren  · 技术社区  · 15 年前

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

    3 回复  |  直到 15 年前
        1
  •  15
  •   erickson    15 年前

    您不能通过电子邮件将密码发送给用户,因为您不知道。你已经“散列”了 applying something like PBKDF2 or bcrypt 把它存起来,对吧?

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

    对于许多应用程序来说,一种足够安全的方法是通过电子邮件向帐户所有者发送一个链接,其中包含一个随机生成的大数字。此令牌只能在有限的时间内有效。如果所有者希望重置他们的密码,他们单击链接,这将验证他们是否为帐户所有者。然后,帐户所有者可以指定新密码。

        2
  •  5
  •   simeonwillbanks    15 年前

    你不应该通过电子邮件发送密码。下面是我使用的一个逐步过程:

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

    在设置新密码之前,旧密码应保持活动状态。别忘了散列和盐渍密码!

        3
  •  0
  •   Andrei Drynov    15 年前

    我想你要用程序来做?还是服务器故障的问题?

    其中一种方法是向用户的电子邮件帐户发送链接。他/她单击链接并重定向到您的安全Web表单,在那里他们重置密码。

    不要将密码通过电子邮件发送给用户