V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ChrisFreeMan
V2EX  ›  程序员

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

  •  
  •   ChrisFreeMan · 15 小时 12 分钟前 · 1710 次点击

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

    第 1 条附言  ·  5 分钟前
    感谢各位回复🙏,我大概知道要怎么做了,其实一开始心里就有数了,只是希望有更魔法的东西出现。
    33 条回复    2024-10-09 12:07:58 +08:00
    Muniesa
        1
    Muniesa  
       14 小时 35 分钟前   ❤️ 1
    想不到,但你这个发不了邮件的问题,或许可以找回密码时让用户使用注册时留的邮箱主动发验证码过来?
    ChrisFreeMan
        2
    ChrisFreeMan  
    OP
       14 小时 31 分钟前
    @Muniesa 不打算继续用这些邮件服务了,经常还要盯着是不是服务异常,增加了工作量,太不值得了
    grayish
        3
    grayish  
       14 小时 1 分钟前
    用户账号也会忘记 不绑定邮箱麻烦
    Nosub
        4
    Nosub  
       13 小时 56 分钟前 via iPhone
    邮箱就是账户名,最简单的办法,不然你只能通过手机号了。
    NoOneNoBody
        5
    NoOneNoBody  
       13 小时 31 分钟前   ❤️ 1
    看样子不是很严谨的网站
    其实留邮箱更多是防 bot 暴力破解以及验证本人操作,不是取回密码的必要步骤

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

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

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

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

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

    要最省力,那就是在注册的时候提示用户妥善保存用户名和密码,丢失后无法找回,只能重新注册新账号。
    gwy15
        9
    gwy15  
       13 小时 11 分钟前
    用 mailgun 之类的发信服务呗
    ChrisFreeMan
        10
    ChrisFreeMan  
    OP
       13 小时 9 分钟前
    @weakish 感谢回复🙏
    ChrisFreeMan
        11
    ChrisFreeMan  
    OP
       13 小时 6 分钟前
    @gwy15 中国联通把我境外接收短信功能关闭了,我发现的时候超出了短信接收上限,不知道会不会恢复,我明早试试。另一个竞争对手,sendgrid 直接把我 ban 了,所以我感觉我得搞一个更加不依赖第三方的方式,一劳永逸。
    drymonfidelia
        12
    drymonfidelia  
       13 小时 4 分钟前
    面向程序员的网站可以考虑 GPG 签名或者 GitHub 的公钥验证找回密码
    drymonfidelia
        13
    drymonfidelia  
       13 小时 2 分钟前
    面向普通人就只能根据要求回忆账号近期操作、近期消费交易号来验证了,大厂也是这么做的
    xmumiffy
        14
    xmumiffy  
       13 小时 1 分钟前
    绑 oAuth 也行
    jeesk
        15
    jeesk  
       9 小时 59 分钟前 via Android
    没有秘密, 使用邮箱,手机验证码或者第三方登陆(微软,谷歌,苹果), 参考 supercell 的方案。
    jeesk
        16
    jeesk  
       9 小时 50 分钟前 via Android
    没有密码, 使用邮箱,手机验证码或者第三方登陆(微软,谷歌,苹果), 参考 supercell 的方案
    as9567585
        17
    as9567585  
       9 小时 19 分钟前
    Google 身份验证器 也叫 动态口令
    promiser3d
        18
    promiser3d  
       8 小时 15 分钟前
    直接简单点不要密码。 用户邮箱登录,就直接发送登录码到邮箱;
    或者干脆用公众号登录。发送登录码到公众号,就直接关联登录了。
    Livid
        19
    Livid  
    MOD
       6 小时 49 分钟前
    agood
        20
    agood  
       5 小时 50 分钟前 via iPhone
    用通行密钥,密码都可以省了,恢复账号的话可以登录后
    agood
        21
    agood  
       5 小时 45 分钟前 via iPhone
    注册之后显示一段恢复代码让用户保存,恢复代码只显示一次,安全期间还可以加上 2fa 验证,第三方登录也是不错的选择
    xuanbg
        22
    xuanbg  
       4 小时 43 分钟前
    加个第三方登录不就好了么
    Junzh
        23
    Junzh  
       3 小时 48 分钟前
    可以参考网易通行证早期的做法:设置一个安全码。
    这个安全码是一个完全自定义的数字,由客户自行设置,记得应该是有最小长度的要求。
    这个安全码拥有该账户的最高权限,包括充值密码的操作。
    当然现在这种安全码可能会被秘钥或者助记词来代替。
    IvanLi127
        24
    IvanLi127  
       3 小时 38 分钟前
    要么第三方登录,要么注册时留联系方式,忘记密码提工单走人工验证。
    BG7ZAG
        25
    BG7ZAG  
       3 小时 6 分钟前
    直接不用密码,使用 2fa 动态验证码登录,无法丢失无法找回,用户自己保存管理
    dode
        26
    dode  
       2 小时 46 分钟前
    绑定开放的登录授权平台
    JustBecause
        27
    JustBecause  
       2 小时 43 分钟前
    直接接入第三方登录呢?
    flmn
        28
    flmn  
       2 小时 17 分钟前   ❤️ 1
    换个好的邮箱服务呗,比如独立开发者最爱的 Resend 。
    另外,集成三方登录也是个好办法。
    luozhsky
        29
    luozhsky  
       1 小时 23 分钟前
    加谷歌验证应该是比较好 大众接受度也比较高的方案之一了..
    sampeng
        30
    sampeng  
       39 分钟前
    所以我特别讨厌邮箱找回密码的。。
    collection
        31
    collection  
       26 分钟前 via Android
    可以 mac 地址加盐吗,近期使用过的几台设备存储下来,匹配到就允许修改
    gam2046
        32
    gam2046  
       24 分钟前
    用户名 + OTP 的方式呢?

    直接摒弃掉密码,而恢复方式依赖于 OTP 的恢复,如果用户自己遗失了 OTP 密钥,也就自然失去了账户的访问权限。
    Vraw5
        33
    Vraw5  
       15 分钟前
    我记得 QQWX 找回的时候会让你选择自己的好友头像。借这个思路,可以将部分用户的内容作为验证项,两三次 9*9 的验证,通过就当 ok 了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3494 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 04:23 · PVG 12:23 · LAX 21:23 · JFK 00:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.