电子邮件安全的最佳实践

信息安全 电子邮件
2021-09-04 08:36:10

我为我的应用程序编写了一个安全层,我希望您能就更新用户的电子邮件地址(也用于登录)提供意见。

我很想听听任何写过类似要求的应用程序的人的来信。你会怎么做?以下是我想到的一些方法,但我怀疑我遗漏了一些东西:

方法一

  1. 更新地址并向新地址发送确认电子邮件
  2. 如果地址未在 48 小时内确认,请暂停
    • 这简单。
    • 如果新地址错误,用户将被锁定在帐户之外。
    • 有人可以通过更改用户地址来劫持帐户。

方法二

  1. 更新地址并临时存储旧值
  2. 向旧地址发送一封通知电子邮件,其中包含撤销更改的选项
  3. 向新地址发送确认电子邮件
  4. 如果用户撤销更改,我将恢复旧地址(通过通知电子邮件)
  5. 如果更改没有被撤销,但新地址在 48 小时内没有得到确认,我将暂停帐户。

    • 安全的
    • 还有很多工作

方法三

  1. 不要更新地址而是临时存储新值
  2. 向旧地址发送一封确认电子邮件,要求确认更改。
  3. 如果确认更改,请执行更新并向新地址发送确认电子邮件。
  4. 如果新地址未在 48 小时内确认,则暂停该帐户。

    • 安全的
    • 还有很多工作

最好是尽可能安全,但我不想让用户仅仅为了更改电子邮件地址而让他们做 1001 件事情。

他们可能还有辅助电子邮件地址,不用于登录,而是用于其他目的,我不确定如何处理这些地址的更新。欢迎提出想法。

2个回答

如果您信任您的登录机制,并且用户只能在登录时更改他们的电子邮件,那么只需:

  1. 更新电子邮件地址。
  2. 在网站上通知用户。
  3. 向旧电子邮件地址发送有关更改的电子邮件通知,包括报告任何问题的链接。

否则,请使用您的方法三,但不要使用第 4 点。此外,在这种情况下,请向两个电子邮件地址发送有关更新的通知。

我的结论与Darthenius 的结论基本相同

我不明白为什么如果他们不跟进,您总是锁定帐户。这似乎并不安全:锁定的风险很大。

任何需要访问旧地址的方法都无法处理用户正在更改他的地址的情况,因为他不再有权访问旧地址。这是一种常见的情况:首先您无法访问电子邮件地址,然后您意识到还有十几个地方仍在使用它。

理想情况下,两个电子邮件地址都应保持有效,直到地址更改得到确认。失去对某个地址的访问权是很常见的,但该地址被立即重新分配的情况不太常见(通常,这是一个机构地址,因为您失去了工作、学生身份……)。

如果您只能拥有一个地址,则将旧地址视为有效地址,直到新地址得到确认。如果未确认新地址,则不执行任何操作。这是您的方法三,只是没有锁定。工作量不大:您只需要一个待处理的地址更改记录,确认电子邮件中的确认代码会触发该记录。

主要或次要电子邮件地址并没有真正进入图片。