V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
ChrisFreeMan
V2EX  ›  程序员

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

  •  
  •   ChrisFreeMan · 65 天前 · 2749 次点击
    这是一个创建于 65 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

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

    直接摒弃掉密码,而恢复方式依赖于 OTP 的恢复,如果用户自己遗失了 OTP 密钥,也就自然失去了账户的访问权限。
    Vraw5
        33
    Vraw5  
       64 天前
    我记得 QQWX 找回的时候会让你选择自己的好友头像。借这个思路,可以将部分用户的内容作为验证项,两三次 9*9 的验证,通过就当 ok 了
    Yanlongli
        34
    Yanlongli  
       64 天前
    比特币钱包登录
    xiaopigfly
        35
    xiaopigfly  
       64 天前
    直接接入 Google 登录、微信登录等第三方的登录方式最好了
    myderr
        36
    myderr  
       64 天前
    身份证号找回
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2321 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 15:47 · PVG 23:47 · LAX 07:47 · JFK 10:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.