最近龟软的 outlook 个人邮箱账户 SMTP 似乎被禁用了,这种情况出现好几次了,每次都过了半个月才发现发不了验证码,思来想去决定简化注册流程,毕竟除了恢复密码外,我根本不需要用户的邮箱。

想不到,但你这个发不了邮件的问题,或许可以找回密码时让用户使用注册时留的邮箱主动发验证码过来?

不打算继续用这些邮件服务了,经常还要盯着是不是服务异常,增加了工作量,太不值得了

用户账号也会忘记 不绑定邮箱麻烦
邮箱就是账户名,最简单的办法,不然你只能通过手机号了。

看样子不是很严谨的网站其实留邮箱更多是防 bot 暴力破解以及验证本人操作,不是取回密码的必要步骤这也简单,注册时让对方留下一句无需纸笔自己也绝不会忘记的话,需要一定长度,并大字注明这是唯一重置密码的方式,届时要一字不差输入,将这句话和用户名加盐 hash 保存用户不记这些东西,说明他也不在意丢失账密无法登入至于暴力破解,用其他方式拦截

用户账户忘记这个不在考虑范围内, 手机号就更不可能去做了,不是什么非常值钱的业务,而且我个人对手机号手收集非常敏感。

嗯嗯,差不多也是我想的,在变成严谨网站之前,我打算先最简化,并保证一定的安全。

问题和答案不是很可靠,用户只有注册的时候才会设置问答,设置好之后以后基本上就再也不用了,到需要恢复账号的时候可能已经忘掉了问答,除非你定期提示用户回答这些问题,如果回答错误就要求重新设置,但是这样对用户来说很麻烦。然后用户如果设置的答案过于简单很可能被攻击者猜到。可以提示让用户绑定多个不同服务商的邮箱,这样用户收不到的时候,可以自己在 UI 选择发送到其他邮箱,当然很多用户可能只绑定一个邮箱,但是绑多个邮箱的用户重试比率超过阈值的时候可以发告警,一定程度上可以减轻工作量。除了邮箱还有就是手机,但是其实很多地区的用户比较排斥绑定手机号,而且通过短信发验证码一样有送达率问题而且发短信比邮件贵多了。另一个途径是通过 WhatsApp API 给相应手机号发验证码,但不是所有人都用 WhatsApp 的。所以盯着邮件服务是否异常(包括人工盯以及设置自动告警)的工作量基本上是省不掉的。要最省力,那就是在注册的时候提示用户妥善保存用户名和密码,丢失后无法找回,只能重新注册新账号。

用 mailgun 之类的发信服务呗

感谢回复🙏

中国联通把我境外接收短信功能关闭了,我发现的时候超出了短信接收上限,不知道会不会恢复,我明早试试。另一个竞争对手,sendgrid 直接把我 ban 了,所以我感觉我得搞一个更加不依赖第三方的方式,一劳永逸。

面向程序员的网站可以考虑 GPG 签名或者 GitHub 的公钥验证找回密码

面向普通人就只能根据要求回忆账号近期操作、近期消费交易号来验证了,大厂也是这么做的

绑 oAuth 也行

没有秘密, 使用邮箱,手机验证码或者第三方登陆(微软,谷歌,苹果), 参考 supercell 的方案。

没有密码, 使用邮箱,手机验证码或者第三方登陆(微软,谷歌,苹果), 参考 supercell 的方案

Google 身份验证器 也叫 动态口令

直接简单点不要密码。 用户邮箱登录,就直接发送登录码到邮箱;或者干脆用公众号登录。发送登录码到公众号,就直接关联登录了。

github.com/spruceid/siwe

用通行密钥,密码都可以省了,恢复账号的话可以登录后

注册之后显示一段恢复代码让用户保存,恢复代码只显示一次,安全期间还可以加上 2fa 验证,第三方登录也是不错的选择

加个第三方登录不就好了么

可以参考网易通行证早期的做法:设置一个安全码。这个安全码是一个完全自定义的数字,由客户自行设置,记得应该是有最小长度的要求。这个安全码拥有该账户的最高权限,包括充值密码的操作。当然现在这种安全码可能会被秘钥或者助记词来代替。

要么第三方登录,要么注册时留联系方式,忘记密码提工单走人工验证。