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

用户绑定新手机号流程,有没有原型简单、使用方便、又稍微安全的流程?

  •  
  •   xiangyuecn ·
    xiangyuecn · 2018-02-28 23:19:11 +08:00 · 2626 次点击
    这是一个创建于 2220 天前的主题,其中的信息可能已经有所发展或是发生改变。

    用户用手机号+验证码注册了用户,如果需要更改手机号了(只考虑系统进行身份验证只有手机号短信验证这一种情况,其他的密保、邮箱、身份证等等高级的不用考虑了),目前我想到了以下几种情况和处理流程:

    1、原手机号能收到验证码:

    这个简单,原手机号接收修改手机号的验证码,验证通过后授权进入绑定新手机号

    2、原手机号不能收到验证码

    这个就复杂了,系统怎么确认你就是你:

    a)通过某种用户历史数据对用户进行验证

    比如选择几个自己好友,勾选几个买过的商品,邀请几个好友来进行验证,比较常见,前提是这个账号有有黏性的历史数据

    b)记得密码

    输入密码,验证通过后获得初步信任,然后:

    ·走 a)方法,算是升级版本

    ·经过算法计算出的周期(赎回周期)后可以重设手机号

    c)不记得密码

    没有想到能用的流程;常见场景:忘记密码,想重置密码(需要手机验证码,手机号又注销了,好尴尬)

    x)人工重设手机号,更加复杂的判断你就是你

    没有想到能用的流程;不过基于简单考虑就基本不考虑了

    谁来分享点干货~

    13 条回复    2018-03-03 09:17:57 +08:00
    lslqtz
        1
    lslqtz  
       2018-02-28 23:33:53 +08:00
    我觉得 a 好一点
    没有历史数据的话可以考虑直接删号了。。。
    lslqtz
        2
    lslqtz  
       2018-02-28 23:34:32 +08:00
    嗯...手机号和身份证对比实名认证?有接口
    abcbuzhiming
        3
    abcbuzhiming  
       2018-02-28 23:44:56 +08:00   ❤️ 1
    a 方式,选择好友和勾选购买商品是不安全的,理论上可能爆破。邀请好友验证这个,曾经有人利用过这点预先埋伏狙击某些人的 QQ 靓号(预先加好友,潜伏)。另外就像你说的,万一没有历史数据呢
    所以 a 方式一般只用在验证一些安全不是很高的场合,比如发现用户从别的 ip 登录,但是密码是正确的时候

    1 方式是最安全的,但是有时不现实

    目前我见过的逻辑上推敲比较安全的办法是,要求用户重新登录,在能正常登录的状况下,才允许直接用新手机号码代替老手机号码,并且,当手机号码被修改后,老手机号码会收到一条短信提示,手机号码被替换,并且,一般设定 24-48 小时内,用户只要登录后台,是可以取消手机号码切换的(重新切换回老的),并且,在这个时间之内,新手机号码不能被用于接受修改密码短信。

    以上这个模型是 QQ 的手机号码切换流程,我推敲过,觉得基本没有漏洞,恶意者就算窃取到密码,只要 qq 的用户在收到短信提醒后立即登录安全中心,取消手机号码切换并理解更改密码,恶意者的攻击就失败了,当然,如果 qq 用户傻逼到收到短信提醒还是无动于衷,错过了安全 24 小时,那就。。。。没救
    abcbuzhiming
        4
    abcbuzhiming  
       2018-02-28 23:46:22 +08:00
    补充一下,C 方式基本就没救了,一般现在都不考虑用户完全不设置邮箱和手机的救援方式,自己重新注册去吧
    imn1
        5
    imn1  
       2018-03-01 00:03:52 +08:00
    写了那么多,完全无视 2FA 了?
    nciyuan
        6
    nciyuan  
       2018-03-01 00:48:00 +08:00 via Android
    给用户授信如果是手机 app 的话,可以接入安卓原生的指纹 API,或者和各大应用商谈个合作,当然是不能把识别是哪一个手指。然后可以你说的 1.和 2.ab 步,
    或者推荐#2 花钱用身份证号对手机的 API
    再或者还有很多数据比如 ip 的 C 段,手机 IMEI,手机号(安卓可以直接调取,但不是每个 OS 都可以),或者位置信息,都是鉴别用户的一种方式
    yksoft1
        7
    yksoft1  
       2018-03-01 01:27:47 +08:00
    密码丢失、没有二次验证手段如密保器之类的前提下,其实最靠谱的还是人工,其次身份证照片+人脸识别+手机实名信息(这样虚拟运营商的手机、国外手机就没办法了),然后才是其他方法比如使用预留的生物信息等。
    densuc
        8
    densuc  
       2018-03-01 06:56:08 +08:00 via iPhone
    貌似可以学习微软 在改变密保手机时候 存在一个保留期
    给原手机发送短信 然后三十日内可以撤销
    xiangyuecn
        9
    xiangyuecn  
    OP
       2018-03-01 10:15:58 +08:00
    @densuc @abcbuzhiming 俩位提到的修改手机号后给原手机一个保留周期,也是一个靠谱的思路哈
    abcbuzhiming
        10
    abcbuzhiming  
       2018-03-01 13:15:24 +08:00
    @imn1 2FA 的成本贼高,又麻烦,引入额外硬件,你看互联网行业有几个引入的
    @yksoft1 这个的前提是在注册时要求人提交身份证信息,照片,手机实名,现在很多人,给个身份证都不愿意,别说照片了。而且安全机制最好不要搞的太麻烦,否则推广就是个大问题
    yksoft1
        11
    yksoft1  
       2018-03-01 13:49:50 +08:00
    @abcbuzhiming 腾讯很早以前( 2010 ?)就有密保器了。。
    imn1
        12
    imn1  
       2018-03-01 14:08:36 +08:00
    @abcbuzhiming
    2FA 好多都有吧,没有的只能说不重视而已
    我 Authy 上面都有 30+个了,还没算 yandex、yahoo!jp 这些用自家验证器的
    而且 2FA 不一定就是验证器,例如 twitter 可以用 app 验证登录的
    xiangyuecn
        13
    xiangyuecn  
    OP
       2018-03-03 09:17:57 +08:00
    @abcbuzhiming 对的,不想设计的太复杂,不然开发起来也费力点,偷下懒~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2837 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 14:37 · PVG 22:37 · LAX 07:37 · JFK 10:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.