最佳实践 - '忘记用户名'流程

时间:2013-09-11 08:35:03

标签: security login username

我目前被要求在我继承的网站上实现'忘记用户名'功能,我很好奇这个过程的最佳做法是什么。我已经遵循了重置用户密码的最佳做法(通过发送过期,一次使用重置链接) - 但似乎没有针对忘记用户名的最佳做法政策。

我在其他网站上看到的选项是:

  1. 输入电子邮件地址并发送 - 这是最直接的,但我对将用户名发送到电子邮件地址感到不舒服。

  2. 输入电子邮件地址并发送一个显示用户名的使用期限到期链接 - 但在它过期或使用后,它显然将不再起作用。

  3. 与2类似,但将其与更改密码流程合并 - 如果用户忘记了用户名,他们就会看到自己的用户名,但他们也必须重置密码。

  4. 用户表中没有设置任何其他信息(安全问题,出生日期等) - 因此,如果不追溯添加,我不能要求提供任何此类信息。但我很欣赏其他人对他们如何实施或者他们认为应该如何实施的任何建议或意见:)。

3 个答案:

答案 0 :(得分:3)

我不确定这是否属于最佳做法。

我想用户名会附带一个内置的电子邮件地址?我见过的大多数网站通常只是要求您输入链接到该帐户的电子邮件地址,您将收到一封包含您用户名的电子邮件。

用户有责任维护其电子邮件地址的安全性。在大多数情况下,用户名是公共信息。我不明白为什么你需要把重点放在它上面。

我喜欢做的是......

或者,如果用户忘记了用户名,您可以要求他们使用自己的电子邮件地址登录。没有必要通过电子邮件发送,用户仍然需要知道密码。

答案 1 :(得分:1)

我没有看到选项1的任何问题,因为您将用户名发送到注册的电子邮件地址,只有注册用户才能访问。正如你所说,这就是其他网站的做法,并且它受到许多人的尝试和信任。

我认为选项2和3是过度杀伤,除非你有这样的关键业务要求来实现它。

答案 2 :(得分:0)

此处提出的所有选项都对安全问题持开放态度。将用户名发送到他们的电子邮件会打开可能会嗅探电子邮件内容的攻击者。

为了更安全的方法,您可以实施一些多因素验证。

示例:

  1. 在发现用户名的表单上,确保它们是多个输入(email和dob)。您添加的越多,它就越安全。

  2. 如果这些输入正确,则询问用户2个或更多安全问题。不要将问题显示为下拉菜单,将其显示为文本。

  3. 最后,如果答案是正确的,那么让他们使用用户名\密码登录表单。

  4. **为了更加安全,在1&之间插入一个步骤。 2将随机令牌通过电子邮件发送给用户,他们必须单击该令牌以继续流程。

    我理解对于大多数应用程序来说这似乎有些过分但如果你正在处理需要严格安全性的事情,那么你必须小心这种流程。

    本文讨论忘记密码,但我认为它的内容适用:

    https://fishnetsecurity.com/6labs/resource-library/white-paper/best-practices-secure-forgot-password-feature