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

17 小时 9 分钟前
 ChrisFreeMan

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

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

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

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

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

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

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

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

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

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

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

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

© 2021 V2EX