【发布时间】:2021-07-20 02:57:54
【问题描述】:
我正在构建身份验证微服务,通过电子邮件确认,问题是过去,我使用随机生成的字符串 (crypto.randomBytes(20).toString('hex')) 它工作得很好,直到 gmail 决定包含指向我的网站链接的 zoho 电子邮件(托管在aws上,并且逐个配置(SPF,DKIM,zoho说明中提到的所有内容),zoho建议,在Route53中)应该进入垃圾邮件,这就是为什么我必须紧急切换到代码身份验证,我发送5-用户必须确认的 6 位代码,正如我在许多网站中看到的那样,这很常见(这是我在这个微服务 atm 中使用的),我生成随机数,迭代用户,检查是否有任何用户该代码,如果有再做一次,但是如果它超过了在配置文件(3)中定义的最大迭代次数,则中断循环,现在我看到的问题是,即使最大 6 位数是 999999,它也可能成为问题扩大,许多同时用户注册延迟验证ication + 攻击者向用户代码发送垃圾邮件,它很快就会成为麻烦,即使我有单独的微服务来清理过期代码,如果用户多次遇到现有代码存在(UX 问题),什么是标准解决方案?这?我在谷歌上搜索了它,但没有发现什么特别的,而且大多数样板都使用编码字符串。
【问题讨论】:
-
不要遍历查看提供代码的用户。相反,要求用户提供电子邮件和代码,然后您只需查找该用户。重复代码也不再有问题。此外,请确保为代码提供较短的有效时间(例如,15 分钟后不再有效)并在几次尝试失败后延迟用户以阻止垃圾邮件发送者并防止资源耗尽。
-
谢谢,看来是有道理的。
-
在此处阅读有关链接/令牌的部分:codeproject.com/Articles/5300920/authentication-flows-js
标签: node.js authentication email-verification