邮箱验证码需要过期吗?

Max*_*ore 5 security email authentication email-verification

我已经注册了一个 GitHub 帐户来测试他们的电子邮件验证过程。所以:

  1. 他们向我发送了一封带有链接的电子邮件,其中包含我的用户名和 40 个字符的代码,例如:https: //github.com/users/USERNAME/emails/120066679/confirm_verification/47889d71648523e5d99db5b969f59809c2715fb6

  2. 我没有点击链接

  3. 4 天后,他们又向我发送了另一封邮件(提醒),要求我验证我的电子邮件,其中包含另一个不同的 40 个字符代码的链接

那么,更改 40 个字符的代码的目的是什么?我记得,其他服务无论如何都会使验证码过期。如果验证链接中已经有用户名,是否真的需要这样做?在暴力破解的情况下,他们可以只计算与特定用户相关的失败尝试并阻止它,对吧?

PS也很有趣,in链接的目的是什么emails/120066679?(这两个字母相似)

col*_*der 4

出于多种原因,验证码快速过期是最佳做法。

如果认为使用验证码进行保护是适当的,那么最安全的做法是使其不仅足够复杂,而且在最短的时间内有效。如果您只让代码在需要的时间内工作(通常很短),那么您就可以降低有人滥用它的风险。(例如,某人可以通过编程方式“猜测”代码 - 进行此练习的时间越多,成功的机会就越高。)

此外,存储此类数据效率不高。它只使用一次,不包含任何实际信息,一旦使用,就可以“扔掉”。存储任何在存储时不会增加价值的东西都不是一个好习惯。

此外,用户不立即/很快使用这些代码的情况相当罕见。对于代码在用户尝试使用时过期的一小部分情况,生成新代码会更有效。