忘记密码表单的最佳实践,可以泄露给定的电子邮件无效

信息安全 密码 密码策略
2021-08-31 05:02:18

在我们的忘记密码重置表单上,是否可以泄露输入的给定电子邮件地址无效?或者我们是否应该总是返回成功并检查您的电子邮件,即使电子邮件无效。

我觉得总是返回成功会提供糟糕的用户体验,即如果用户试图记住他们用于服务的电子邮件。

4个回答

我不会说要求用户检查他们的电子邮件帐户是一种糟糕的体验——无论如何,这将是他们期望去的下一个位置。如果他们没有注册,您可以向他们发送一封电子邮件,说明他们的电子邮件地址未与任何帐户关联。这将阻止任何其他用户验证电子邮件地址是否已向您注册(用户名枚举)。

另请在此处查看我的答案:如何防止在表单中发现电子邮件?,这可能是相关的。

这绝对是一个信息披露问题。问题是它是否是一个大问题。内部应用程序可能不是。面向互联网可能取决于应用程序的功能。这取决于您或您要保护的任何人/任何人。这也与注册披露有关。如果您尝试使用相同的电子邮件等注册一个帐户。

我个人的偏好是显示一条类似“如果我们有记录的电子邮件地址,我们将通过电子邮件向您发送 [whatever]”的消息。

显然,这里的担忧是攻击者有可能通过尝试所有可能的组合并查看有效的方法来枚举现有用户的电子邮件地址,或者可能存在不正确地披露给定地址与用户相关联的事实的风险。

有几种方法可以做到这一点,“忘记密码”方法只是其中一种。另一种是尝试使用其他人的电子邮件地址注册并查看是否被拒绝。并且根据应用程序的不同,可能还有许多其他类似的技术。

风险非常低,因为您获得的信息通常不是很有用。由于你得到的只是一个“是/否”的答案(例如,你没有得到他们的用户名或最后已知的 IP),因此很难在另一次攻击中利用这些知识。但也许并不总是不可能的。

尽管如此,在许多应用程序中,如果您采取了一些合理的预防措施,我认为这将被认为是用户可以接受的风险,以换取忘记密码屏幕中的一些用户友好性。

当然,速率限制将是至关重要的。你应该已经这样做了。如果一个人在短时间内尝试了多次以上,你应该让他们放慢速度。也许如果他们坚持下去,你应该让他们停下来给你打电话。

另一种可能性是验证码——它们并不完美,但它们肯定会使自动化变得更加困难。

另一个需要更多信息,而不仅仅是电子邮件地址。也许他们需要提供他们的电子邮件地址和邮政编码或姓氏或最喜欢的口袋妖怪。当然,这增加了滥用的可能性,因此攻击者可以使用您的服务将电子邮件地址链接到最喜欢的口袋妖怪,但是这样的攻击可能成本太高,不值得他们花时间,特别是如果您包含上述缓解措施。

我认为您应该告诉用户他/她的电子邮件无效,如果您总是说“成功”,他们将永远不知道密码重置是否正常,然后他们将在第一次尝试时停止尝试。当然,攻击者可以使用它来发现电子邮件。

我认为这里最好的解决方案是使用“登录”和“电子邮件地址”重置密码。

如果用户输入错误的登录名或/和电子邮件地址,您只需显示一条消息 ' Incorrect Info , check Login/email'

不要告诉登录或电子邮件是否错误,这样您就不会陷入第一个安全问题。