将电子邮件地址复制到忘记密码页面

信息安全 验证 电子邮件
2021-08-30 16:55:27

我负责一个网站,我质疑我被要求遵守的一些“行业标准”政策的逻辑。

当用户登录网站时,他们会收到一条消息,告诉他们登录详细信息不正确,但我们没有具体说明是用户名还是密码不正确。

如果用户随后意识到他们忘记了密码(应该使用密码管理器),他们可以单击忘记密码链接并输入他们的电子邮件地址并按 Enter。然后他们会看到一条消息,告诉他们如果他们有帐户,则该帐户已被锁定,并且密码重置电子邮件已发送到他们的电子邮件帐户。

到目前为止,关于哪个凭证不正确或提供的电子邮件是否存在帐户的信息没有泄露。

为了提高用户体验,我建议如果用户点击忘记密码链接,如果在登录字段中可以找到,我们应该将邮箱地址复制到忘记密码页面的邮箱地址字段中。

然而,有人告诉我这违反了“行业标准”,尽管没有人可以向我展示任何支持这一点的东西!

我知道简单地将其添加到 URL 会很糟糕,因为它会允许人们循环浏览电子邮件地址并锁定人们的帐户,从而给用户带来不便。

什么样的安全漏洞(如果有的话)会造成这种不好的做法?

编辑:

任何新读者的更新。

这里有一些很好的答案,我很感激所有的意见。

该过程有一个缺陷,在忘记密码时锁定,这将被修改。锁定帐户时的消息仍然会email address or password incorrect发送消息,因此用户不会知道电子邮件地址是有效的。

4个回答

没有这样
的你提议的改变似乎只是用户体验的改变。是的,有人可以说它会让恶意用户将普通用户锁定在系统之外,这对用户来说是友好的,但这不取决于你。
对您来说更大的问题是当用户点击忘记密码时锁定用户帐户的策略。它使恶意用户很容易将您锁定在您的帐户之外。他们只需要忘记密码->输入有效的电子邮件ID->点击重置按钮。

这里没有任何重大问题,尽管我会确保禁用缓存,以便在同一浏览器中访问该页面的任何人在加载“忘记密码”页面时都无法访问电子邮件地址。

来自此处的标头建议请注意,虽然按照pragma规范,HTTP 1.0 中的请求标头,但如果在响应中给出,许多浏览器和代理服务器仍会解释它。

Cache-Control: private, no-cache, no-store, max-age=0, no-transform
Pragma: no-cache
Expires: 0

您还应该通过将重定向发布到忘记密码页面来缓解浏览器历史记录中的跨域引用泄漏和存储。

关于您的一般方法的其他评论

然后他们会看到一条消息,告诉他们如果他们有帐户,则该帐户已被锁定,并且密码重置电子邮件已发送到他们的电子邮件帐户。

锁定帐户可以作为针对特定用户的拒绝服务攻击来完成。如果我知道 bob@example.com 在您的系统上有一个帐户,并且我想拒绝为他提供服务,我可以反复请求该帐户的密码重置以继续锁定他。

当用户登录网站时,他们会收到一条消息,告诉他们登录详细信息不正确,但我们没有具体说明是用户名还是密码不正确。

如果帐户被锁定,您会显示什么?

如果您说他们的用户名和密码不正确,那么用户可能会感到困惑,如果它实际上已被锁定(根据我上面的 DoS 解释)。

但是,如果您说他们的帐户已被锁定,您是否也在为不存在的帐户执行此操作?我问是因为如果没有,作为攻击者,我可以尝试重置密码,然后立即尝试以同一用户身份登录。如果我随后收到一条消息说该帐户已被锁定,则我发现了一个有效帐户(这被归类为用户枚举漏洞)。

因此,如果尝试重置密码,您可能还希望使您的逻辑看起来锁定不存在的帐户。您可能希望在随机一段时间后解锁这些,否则攻击者可能会推断出永久锁定的帐户是由于从未解锁而不存在的帐户。

在将用户名复制到忘记的密码页面时,我看不到您破坏的任何“行业标准”。

据我所知,只要您为有效和无效的用户名(电子邮件地址)显示相同的消息,当这被提交到忘记密码设施时,您应该没问题。

IE 无论电子邮件地址是有效还是无效,都会向用户显示一条类似以下内容的消息:“谢谢!如果使用提供的电子邮件地址创建了一个帐户,将向用户发送一封电子邮件该地址,以及重置密码的说明。”

我可以看到问题的唯一方法是,如果用户名字段启用了自动完成。显然,如果用户在共享计算机上,那么他们的用户名(电子邮件地址)可能会被泄露给攻击者,但这一切都取决于此处讨论的网站类型。

撇开潜在的安全漏洞不谈,这依赖于客户正确地认为他们的电子邮件地址是正确的,并且只是密码错误的假设。

错误输入电子邮件地址且没有立即注意到这一事实的客户将点击重置密码,电子邮件地址将被自动填充,并且他们将单击“重置密码”而不仔细检查自动填充的电子邮件地址。可能不会注意到电子邮件字段中的拼写错误,如果电子邮件地址一目了然,用户可能会认为密码是错误的。

然后,他们将等待一段时间以等待永远不会到达的密码重置,因为它去了 customer.name@gmali.com

他们的下一步将是,根据您的业务性质,致电客户支持,寻找具有相同产品的竞争对手,等等。这里的空白都不适合您。