更改用户电子邮件地址的建议最佳做法是什么?

信息安全 验证 电子邮件 账户安全
2021-08-12 06:48:33

我最近跳上了一个未命名的电子邮件服务的炒作,目前我正在更新我在各个网站上的所有帐户,以便从谷歌的 Gmail 中获取我的大部分(未来)数据。

在这次冒险中,我遇到了一些更改您的电子邮件地址的用户流程,我想分享这些用户流程(“许多”或“一些”之类的数量纯粹是主观的,我没有计算在内):

  1. 无话可问

    电子邮件地址刚刚更改,没有任何确认电子邮件、第二次密码检查或拼写检查(两个输入字段)。电子邮件地址是此帐户的主要登录方法,其中包含一些敏感数据。如果他们更改电子邮件地址并随后更改我的密码,则不会阻止任何具有恶意意图的人接管我的帐户。

  2. 确认新电子邮件

    我觉得大多数平台使用的方法:您将收到一封确认电子邮件到您提供的新地址。这将确保您正确输入电子邮件,但不会阻止任何人更改主要登录方法。

  3. 通过旧地址确认

    很少有平台会向旧地址发送电子邮件以检查我是否是该帐户的实际所有者。如果我点击邮件中的链接或输入他们发给我的号码,地址就会改变。

  4. 通过旧地址和新地址确认

    就在我不得不用我的旧地址确认我是该帐户的所有者收到另一封电子邮件到新地址以检查它是否确实存在时。

回过头来看,感觉就像通常的 UX 与安全冲突。虽然方法 1 提供了最舒适的流程,但正如已经指出的那样,我认为它存在最多的问题。必须确认旧地址和新地址有点麻烦,但这是列出的将用户帐户掌握在自己手中的最佳方式。

还有其他我不知道的常用方法吗?通常认为最佳实践是什么?

4个回答

我在确认旧电子邮件地址时看到的问题是,有时人们会更改地址,因为他们无法再访问旧电子邮件地址。例如,旧地址可能已过期(甚至可能重新分配给其他人!)。或者他们可能只是忘记了旧地址的密码,并且没有其他方法来证明他们的身份。或者旧地址属于他们曾经工作的一家公司,他们无法再访问它。或者它可能由于其他原因被阻止或终止(违反 ToS、DoSed、充满垃圾邮件并且实际上无法使用等)

所以在我看来,您有两种方式登录帐户:使用您的密码,或使用您的电子邮件帐户请求重置密码。因此,电子邮件帐户是另一种身份验证方式。现在,每当您更改身份验证方式时,您都应该验证您的身份。如果您不能依赖旧的电子邮件帐户(您即将更改),那么显而易见的解决方案似乎会在您更改地址之前询问您的当前密码。

  • 询问您当前的密码(这是对您身份的有效验证),以便能够更改电子邮件地址。
  • 确认您有权访问新的电子邮件地址,如果通过验证,请将其设为新的默认电子邮件地址。
  • 也许对已更改的旧地址做点什么。

在我看来,你对旧帐户所做的事情有一些优点和缺点。您可以决定:

  • 向旧电子邮件发送通知,例如:“您用于访问网站示例的电子邮件地址已更改,如果您没有预料到,您的帐户可能已被盗用,等等。” 您还可以提供一个链接来恢复可能被盗用的帐户,其中的令牌会在一段时间后过期。此选项的问题在于,如果旧帐户已重新分配给其他人,您不希望让他们知道太多信息(并且绝对不给他们直接恢复选项)
  • 一旦成功更新旧电子邮件,只需丢弃旧电子邮件,无需发送任何通知。这样做的问题是,如果攻击者设法窃取用户的密码,他们可以完全接管他们的帐户并将其锁定。
  • 不要向旧电子邮件发送任何内容,而是将其保留在数据库中一段时间​​,以获得支持或恢复,以防被盗帐户(使用旧电子邮件)的真正所有者出现寻求帮助。此选项的问题在于,如果帐户被盗,真正的所有者可能直到……多长时间才意识到这一点?
  1. 确认新电子邮件

我觉得大多数平台使用的方法:您将收到一封确认电子邮件到您提供的新地址。这将确保您正确输入电子邮件,但不会阻止任何人更改主要登录方法。

这应该是“正确”的方式。理由:

  • 这确认您输入的邮件地址正确无误
  • 你可以访问它
  • 并且托管它的邮件服务器可以访问并且将接受邮件 - 可能存在 DNS 错误配置或垃圾邮件过滤器阻止邮件传递

因此,在确认之前不要进行邮件地址的更改。

这种方法有一个问题:如果您在无人看管的计算机上登录,其他人可能会更改邮件地址并接管您的用户帐户。

解决方案是使用当前密码确认请求。这是又一步,但我觉得不便是可以容忍的:用户不应该经常更改他们的注册邮件地址。

变体:如果您的网站在注册时有该选项,您可以要求回答一个秘密问题。最好不要像出生日期这样的秘密问题,这可能是公众知识......

理由:您的密码可能已被泄露并在某些 pwnlist 中找到,尤其是当您跨站点重复使用相同的密码时。但是有可能不容易找到您的秘密问题的答案。缺点:之前记录的问题和答案应该不再可见或不可修改。这意味着您应该使用具有稳定/永久答案的问题,同时避免陷入常见的、不那么秘密的问题,例如出生日期或母亲的娘家姓。

因此,也许这对于某些站点但并非全部站点都是实用的选项。

  1. 通过旧地址确认

很少有平台会向旧地址发送电子邮件以检查我是否是该帐户的实际所有者。如果我点击邮件中的链接或输入他们发给我的号码,地址就会改变。

如前所述,用户可能已经失去了对旧地址的控制权,它可能是您离开(或被解雇)的公司的专业地址。或者该地址可能已失效或已分配给其他人。这里存在不必要的信息泄露的风险。确认新地址后,不应再使用前一个地址。

最后但同样重要的是:记录对用户配置文件所做的所有更改。如果有人报告未经授权的访问,您应该能够知道何时进行更改以及发起更改的 IP 地址。实际上,确认邮件通常会包含 IP 地址。在您的隐私政策中澄清这一点:您记录了什么样的信息,何时以及持续多长时间,同时确保遵守适用的法规。

如果您的站点具有2FA并且用户已启用它,则需要 2FA 确认,具体取决于服务的性质。如果您只是想更改一些免费通讯订阅的邮件地址 - 2FA 是不合理的。如果你是银行,那就不一样了。SMS/OTP 可能会发挥作用。

如果您将电子邮件视为帐户身份验证的一种形式,那么理想情况下,您应该寻求通过替代形式确认任何更改,例如短信、其他电子邮件帐户、软令牌、实体信函等。

在许多情况下,电子邮件是您帐户的主要 ID,根据帐户的安全程度,您将需要增加替代验证形式。

  • 您问题中的示例 1 在许多层面上完全不安全且存在缺陷
  • 示例 2 仍然不安全,因为恶意行为者只需要确认他们控制的电子邮件服务上的更改(没有原始电子邮件因素验证)
  • 示例 3 应该是最少的,但是如果帐户的目标是安全,则应该使用额外的验证/验证因素
  • 示例 4 并不比示例 3 更安全,仅有助于确保新电子邮件有效

最佳实践应该是验证替代通信因素。数量和类型取决于供应商的服务和风险偏好。

新电子邮件的确认绝对值得包含在最佳实践中。替代方案(例如两次键入新电子邮件)同样耗时且不确定。

旧电子邮件的确认是弄巧成拙的(许多用户只是在它已经停止工作时才考虑更改地址)。但是,在电子邮件更改时向旧电子邮件发送恢复链接可能有助于防止密码较弱的帐户被轻易窃取。

旧地址不仅被禁用,而且被重新分配给新用户的可能性很小。但是,如果旧帐户已重新分配给其他人,并且该人有恶意,则无论电子邮件更改的恢复选项如何,原始用户都会被搞砸。他们也可以重置帐户的密码,防止合法用户首先更新电子邮件。