首页 > 解决方案 > 邮箱验证码是否需要过期?

问题描述

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

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

  2. 我没有点击链接

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

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

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

标签: emailsecurityauthenticationemail-verification

解决方案


验证码快速过期是最佳做法的原因有多种。

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

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

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


推荐阅读