你是否有认真设计过找回密码的流程?
如果你的产品中设计了账号+密码登录的体系,用户难免会忘记登录密码,所以你的产品流程里就难免会有「找回密码」的分支。
找回密码功能对产品经理的逻辑思维是一个不小的考验。
(一)
首先,用户在找回密码时,心情是略带急躁、不平稳的。这时候要避免大量的输入,特别是需要大量调取记忆内容的输入项。
所以,找回密码设计的核心之一是:找出账号和密码之间最核心的关联关系,给用户最简化的流程。
如果你的账户体系是单账号登录体系(如只使用手机账号作为登录账号),除了要有使用短信找回密码的入口,还需要有申诉入口(人工处理)。比如,手机换号就是挺蛋疼的事情。
流程1:登录困难->忘记密码,找回->输入手机号->获取验证码->输入新密码。
流程2:登录困难->手机号不能用->人工申诉->验证账号所有权->人工修改登录账号与密码。
此时,申诉的入口挺重要的。
如果你的账户体系是多账号体系(如可使用账号、手机号、邮箱登录),在找回密码时,可以选择通过什么渠道找回密码,流程分解同上。
当可登录账号数等于2,如果是 账号+手机或账号+邮箱,跟单账号登录体系无多大差别,这时候申诉入口显得同样重要;如果是手机+邮箱,则两个登录账号同时无法使用的概率较小,申诉的入口则显得不那么重要。
(二)
无论流程怎么设计,找回密码里最重要的一环是验证账号相关性和账号密码找回凭据有效性。
什么是账号相关性?
比如登录账号是testxss,关联的手机登录账号是15017592905,则testxss和15017592905 具有相关性,修改testxss 时不能输入别的手机号。
什么账号密码找回凭据有效性?
比如15017592905手机验证码为3214,输入验证码时一定要检查3214与手机号15017592905 是否关联,一旦用户输入的验证码和手机具有关联关系,生成修改密码的有效凭据,凭借此凭据修改对应的账号的密码。
在修改密码的过程中,毫不夸张地说,有超过1成的产品找回密码流程存在「越权修改密码」的逻辑漏洞。
比如下面的找回密码流程:
步骤1:输入手机号
步骤2:获取手机号验证码
步骤3:验证手机号和验证码是否吻合,如果吻合,进行步骤4;如果不吻合,进行步骤1或2;
步骤4:输入新密码
步骤5:提交修改(此时提交的参数有手机号、新密码)
流程乍一看,没什么问题,但是黑客只需要在步骤5上抓包,把手机号修改一下,就可以成功修改任意手机号的密码,所以就有了重置任意用户密码的漏洞。
所以,在步骤5,必须有找回密码的凭证(可以连同验证码一起提交,在步骤5才验证手机号和验证码是否吻合;或者在步骤3生成唯一凭证,该凭证与手机号有关联),证明本次修改密码的账号与前面输入手机号账号是一致的。
(三)
最后,个人挺讨厌在手机端找回密码时需要输入两回密码的(一次是新密码,一次是验证新密码);也有人说两次是强化记忆,但仍觉得没有输入两次密码的必要:
- 大部分人用的多是重复密码
- 复杂密码需要重复切换手机键盘,容易误打,体验糟糕。
- 强化密码可以通过「可视密码开关」来让用户进行二次确认,比如长按某个icon,可以显示密码,松开则隐藏。
再强调下,修改密码最重要的是逻辑健壮,避免越权修改漏洞。
#专栏作家#
歪,微信公众号:程序员和产品经理。人人都是产品经理专栏作家,关注移动医疗,移动网页、APP设计。
本文原创发布于人人都是产品经理,未经许可,不得转载。
设置新密码的时候如果改成只输入一次密码的话,误操作打错了一个字母,那么下次输入的时候就不可能把密码打对了
想请教一下,黑客具体怎么抓包?怎么做才能防范呢?
“或者在步骤3生成唯一凭证,该凭证与手机号有关联”,步骤3验证码不就是凭证吗?文中不是说这种存在逻辑漏洞,为什么结论又说生成唯一凭证就可以?
目前市场上各种软件,各种账号太多,容易记混,要是人体特征登录技术成熟的话,就省去了太多的麻烦了
➡ 我觉得没必要输入两次密码,输入错误=忘记=找回
提交修改黑客抓包这块,你说的应该是验证码已经验证通过了 到下一步输入密码,再提交的情况会出现。
现在部分app、web找回密码都在一个页面完成,手机号 – 验证码 – 密码 – 提交,这种情况下是点击提交会验证手机号和验证码是否吻合,应该不会出现抓包的情况。
那么直接输入密码为明文密码,是否可以?
明文 给用户的感觉不是很好 用户习惯输入密码都是* 突然显示出来用户会有疑问 像APP这种 正常用户登录后很少会出现退出再登录的情况,短期也不会出现要找回密码的情况
像现在有的app都是短息快捷登录 我觉得也不错 比如探探 😳
我觉得输两次密码还是有必要的……
我觉得黑客抓包这种安全机制也应该是开发人员需要考虑的,不过有些制度不健全的公司,真的是所有的问题,都是产品经理的问题,都是产品经理要想到的问题,无语。。。
有句话叫做,产品经理要对所有结果负责。这话不是责备的意思,而是希望pm能主动想到一些问题,或者说更是一种心态。有了这种心态,别人再怎么黑也不会怕,因为我已经自我反思过了 😈
黑客抓包不是开发人员应该考虑的吗