电子邮件地址确认链接应该持续多长时间?为什么它必须过期?

信息安全 Web应用程序 电子邮件
2021-08-22 18:11:11

用户注册后,会向他们发送一封电子邮件,其中包含他们必须单击以激活帐户的链接。我知道其他网站对用户点击链接的时间有限制,否则链接就会过期。想一想为什么有这个必要?是为了防止攻击者创建他不拥有注册电子邮件的帐户,因为他可以生成任意数量的帐户并且有无限的时间猜测到它们的激活链接?

如果有必要,用户需要多长时间点击链接?

3个回答

大多数网站允许一个电子邮件地址仅用于一个帐户,这是有道理的,因为大多数时候,用户只需要一个帐户。因此,需要一个唯一的电子邮件地址。

话虽如此,一旦用户注册但只需要确认他的电子邮件地址,您希望在数据库中插入用户的电子邮件地址,以不允许其他人或同一个人再次注册。如果您不处理电子邮件确认到期,则有人可以使用其他人的电子邮件地址注册并且永远不会确认它,这将锁定合法用户的电子邮件,如果他想注册到您的网站。

如果用户在给定的时间长度内没有确认他的电子邮件地址,你想再次使它可用,以防它不是他的地址,或者如果他想稍后再次注册。考虑用户错误地输入了错误的电子邮件地址的情况。

现在对于正确的时间长度,我会说这取决于它的网站类型。我看不出允许超过几个小时的意义,因为如果用户能够注册到您的网站,他应该能够快速访问他的电子邮件地址。考虑用户忘记了他的电子邮件地址密码并且无法访问它的情况。他可能需要通过一些步骤来取回他的密码,这可能需要一段时间。但是,如果他必须重新注册,真的有害吗?再次,这取决于网站。

将资源耗尽攻击排除在外,您没有理由必须使这些链接过期。

也就是说,您应该考虑 99% 的用户将如何使用您的网站并为此进行优化。很少有人会在收件箱中找到 18 个月前的激活链接并记住您的网站并仍然觉得它有用并单击该链接。

使用永久有效的激活链接或代码,您必须永久保留它们。如果您有一个受欢迎的网站,该网站可能在您的数据库中有很多行。

如果您在 10 天后过期这些链接并且他们必须再次单击“创建帐户”,那么更糟糕的情况是什么?

顺便说一句,因为用户 A 已经使用了他们的电子邮件地址(错误地或恶意地)而阻止用户 B 的激活是一种非常糟糕的体验。这不是关于谁先到达那里,而是关于谁实际拥有电子邮件帐户。

我同意这个答案(+1)。大多数网站都需要具有“重新发送验证电子邮件”功能,因为原始电子邮件可能会在途中丢失或被垃圾邮件过滤器阻止。这意味着,与最受好评的答案相反,没有人可以锁定我的电子邮件,因为我总是可以将验证电子邮件重新发送到我的地址。所以验证链接过期的唯一真正原因是存储资源:我们要删除未验证的帐户(链接)以避免存储无限增长或变慢。因此,我们需要一种明智的方法来删除“过期”的未验证帐户(例如自上次发送验证电子邮件后的 48 小时)。