如果要设计一个用户注册系统只需要用户名和密码,除了设置问题和答案外还有什么更好的方式帮助用户找回密码。

78 天前
 ChrisFreeMan

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

2770 次点击
所在节点    程序员
36 条回复
Muniesa
78 天前
想不到,但你这个发不了邮件的问题,或许可以找回密码时让用户使用注册时留的邮箱主动发验证码过来?
ChrisFreeMan
78 天前
@Muniesa 不打算继续用这些邮件服务了,经常还要盯着是不是服务异常,增加了工作量,太不值得了
grayish
78 天前
用户账号也会忘记 不绑定邮箱麻烦
Nosub
78 天前
邮箱就是账户名,最简单的办法,不然你只能通过手机号了。
NoOneNoBody
78 天前
看样子不是很严谨的网站
其实留邮箱更多是防 bot 暴力破解以及验证本人操作,不是取回密码的必要步骤

这也简单,注册时让对方留下一句无需纸笔自己也绝不会忘记的话,需要一定长度,并大字注明这是唯一重置密码的方式,届时要一字不差输入,将这句话和用户名加盐 hash 保存

用户不记这些东西,说明他也不在意丢失账密无法登入
至于暴力破解,用其他方式拦截
ChrisFreeMan
78 天前
@grayish 用户账户忘记这个不在考虑范围内,
@Nosub 手机号就更不可能去做了,不是什么非常值钱的业务,而且我个人对手机号手收集非常敏感。
ChrisFreeMan
78 天前
@NoOneNoBody 嗯嗯,差不多也是我想的,在变成严谨网站之前,我打算先最简化,并保证一定的安全。
weakish
78 天前
问题和答案不是很可靠,用户只有注册的时候才会设置问答,设置好之后以后基本上就再也不用了,到需要恢复账号的时候可能已经忘掉了问答,除非你定期提示用户回答这些问题,如果回答错误就要求重新设置,但是这样对用户来说很麻烦。然后用户如果设置的答案过于简单很可能被攻击者猜到。

可以提示让用户绑定多个不同服务商的邮箱,这样用户收不到的时候,可以自己在 UI 选择发送到其他邮箱,当然很多用户可能只绑定一个邮箱,但是绑多个邮箱的用户重试比率超过阈值的时候可以发告警,一定程度上可以减轻工作量。

除了邮箱还有就是手机,但是其实很多地区的用户比较排斥绑定手机号,而且通过短信发验证码一样有送达率问题而且发短信比邮件贵多了。另一个途径是通过 WhatsApp API 给相应手机号发验证码,但不是所有人都用 WhatsApp 的。

所以盯着邮件服务是否异常(包括人工盯以及设置自动告警)的工作量基本上是省不掉的。

要最省力,那就是在注册的时候提示用户妥善保存用户名和密码,丢失后无法找回,只能重新注册新账号。
gwy15
78 天前
用 mailgun 之类的发信服务呗
ChrisFreeMan
78 天前
@weakish 感谢回复🙏
ChrisFreeMan
78 天前
@gwy15 中国联通把我境外接收短信功能关闭了,我发现的时候超出了短信接收上限,不知道会不会恢复,我明早试试。另一个竞争对手,sendgrid 直接把我 ban 了,所以我感觉我得搞一个更加不依赖第三方的方式,一劳永逸。
drymonfidelia
78 天前
面向程序员的网站可以考虑 GPG 签名或者 GitHub 的公钥验证找回密码
drymonfidelia
78 天前
面向普通人就只能根据要求回忆账号近期操作、近期消费交易号来验证了,大厂也是这么做的
xmumiffy
78 天前
绑 oAuth 也行
jeesk
78 天前
没有秘密, 使用邮箱,手机验证码或者第三方登陆(微软,谷歌,苹果), 参考 supercell 的方案。
jeesk
78 天前
没有密码, 使用邮箱,手机验证码或者第三方登陆(微软,谷歌,苹果), 参考 supercell 的方案
as9567585
78 天前
Google 身份验证器 也叫 动态口令
promiser3d
78 天前
直接简单点不要密码。 用户邮箱登录,就直接发送登录码到邮箱;
或者干脆用公众号登录。发送登录码到公众号,就直接关联登录了。
Livid
78 天前
agood
78 天前
用通行密钥,密码都可以省了,恢复账号的话可以登录后

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1078378

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX