处理忘记验证帐户的最安全方法?

信息安全 验证 密码破解 账户安全 oauth 证书
2021-08-30 01:51:43

假设我们向新订阅者发送电子邮件验证,他们必须单击链接来验证他们的帐户。

假设他们忘记验证它,然后尝试登录。

错误信息是否应该显示“您的用户名或密码不正确?”,而不是让他们知道他们忘记验证帐户。

我认为这是最安全的处理方式,因为如果我们告诉他们必须验证帐户,我们就是让他们知道存在具有该用户 ID 的帐户...

想法?

也许处理它的最好方法是允许他们访问该帐户,但在他们得到验证之前不要让他们在其中做任何事情?

4个回答

我最常见的是允许身份验证和登录用户,但在验证电子邮件之前锁定有意义的功能。如果用户尝试访问受限制的功能之一,您应该冒泡一个错误,提醒他们重新发送激活电子邮件。

对用户撒谎是糟糕的设计——如果他们提交了正确的用户名和密码,你永远不应该显示一个错误,声称两者都不正确。

我同意 Buffalo5ix,但不应将电子邮件验证视为帐户安全的一部分。电子邮件验证:

  • 证明地址的所有权,只是为了知道用户输入了正确的地址,以便您发送垃圾邮件密码恢复电子邮件。
  • 对注册多个虚假账户起到非常轻微的威慑作用。自动创建电子邮件地址(通过使用临时邮件/托管您自己的电子邮件服务器)并自动单击验证链接非常容易,因此 CAPTCHA 将是一个更好的系统来防止虚假帐户的自动注册。

我看不出任何与安全相关的原因,为什么您应该以任何方式锁定未经验证的帐户。[澄清:我并不是说您应该向未经验证的电子邮件帐户发送消息,这至少是垃圾邮件,最坏的情况是如果用户输入错误的电子邮件,随机人可以重置帐户密码。我是说不应该禁用帐户登录,显然应该禁用向未经验证的地址发送电子邮件。]

我更喜欢屏幕顶部的小横幅,提醒我验证帐户并提示重新发送验证电子邮件。将用户视为犯罪嫌疑人或在他们注册后立即唠叨他们是不礼貌的,让他们受到欢迎。

您不想泄露用户名存在的信息以响应未经身份验证的登录尝试。这将允许攻击者确定他们列表中的哪些电子邮件地址存在于您的服务中。

但是,如果用户使用他们在注册时提供的密码登录,那不是您所处的情况。您知道(就像您曾经使用密码一样)登录的人就是注册该密码的人。所以告诉他们他们的用户名存在并没有什么坏处;他们知道,因为他们注册了!

您不知道的是,此人实际上确实控制了您为他们提供的电子邮件地址。这实际上与验证使用密码登录的人的身份无关。您可能希望将其用作证明其身份的替代方法(以便他们可以从丢失密码中恢复)。没有验证他们的电子邮件意味着您不能安全地这样做(因为您知道注册的人控制着该电子邮件地址),因此他们无法安全地控制自己的帐户。但这并不意味着您有比平常更多的理由怀疑密码证明了他们是谁,并将他们视为未经身份验证的用户。

如果您认为不允许用户在未验证其电子邮件的情况下登录和使用您的服务很重要,那么一旦您确定了与您通信的人的身份,您应该简单地告诉他们这就是问题所在并让他们解决它。

我想指出一些可能被忽视的东西

错误信息是否应该显示“您的用户名或密码不正确?”,而不是让他们知道他们忘记验证帐户。

我认为这是最安全的处理方式,因为如果我们告诉他们必须验证帐户,我们就是让他们知道存在具有该用户 ID 的帐户...

如果他们必须输入他们的身份验证信息,那么您仍然可以让他们知道他们需要验证他们的帐户才能访问它......只要您仅在身份验证正确时发送该消息。您不会以这种方式泄漏任何信息,因为他们必须输入有效密码才能获取有关给定帐户的消息,否则他们无论如何都会在帐户内。

如果您真的觉得未经验证的帐户实际上应该被锁定直到经过验证,这是一种非常好的处理方法(也可以选择重新发送此屏幕的验证电子邮件,因为垃圾邮件/等会丢失东西)。