忘记密码找回流程中设置哪些门槛既可以保证安全又能不打扰用户?

密码找回是所有人都可能面临的问题,它既涉及到帐号的安全性,又会因为流程过于冗杂而打扰用户,那么该如何设计流程比较合理?
回答 11 排序
D.Z 腾讯科技(深圳)有限公司 产品经理
这个问题可以拆分为两个部分:安全性(即设置的门槛)和流畅性(不过于冗余而打扰用户)



【安全性】

安全性上,现在已经有很多成熟的密码找回验证设置,主要可以分为以下几类:



1、个人信息类

为了验证找回密码的操作是用户本人进行的,需要对用户的身份进行验证,而证明“用户是本人”,无非即提供个人信息,例如:

填写账户名称、手机号-验短、邮箱-找回密码链接、甚至有一些支付相关的产品,会要求用户填写身份证信息。

这是找回密码的标配一步,基本上所有产品都必须涉及。



2、问题类

很多产品/应用在用户首次注册时即会要求用户设置安全保护问题,如“我的高中名称”,“我最喜欢的一本书”,“我最喜欢的一部电影”等。等到用户忘记密码,进行找回密码操作时,即会要求用户回答其当时填写的安全保护问题的答案,验证通过方可进行下一步密码重设操作。



3、防刷

现在网络技术发达,很多盗号的人会采用机器批量刷密码,因此,在找回密码时,需要设置防刷操作,即验证操作进行者是真人而非机器,这个途径大致有三种方式:



a.验证码

系统随机生成“数字+英文字母”,用户识别后将其填写入验证码框,有一些严格的还会要求区分大小写英文字母



b.拖动滑块完成拼图

该类型会提供用户一幅图片,但中间有一块是缺失的,用户需要手动拖动一块拼图到图片中缺失的地方补全图片以完成验证;有些平台为了增强趣味性,还会帮用户计算从拖动到完成填补共用了几秒,打败了全国百分之几的用户



c.文字/图形识别

系统提供几个文字,其中部分为倒置的,用户需要识别出倒置的文字并将其点击正置;还有的是提供6、9幅小图片,要求用户挑选出特定的图片,如“请选出水果的图片”,“请选出汽车的图片”等。



4、账号申诉类

部分跟用户利益切身相关的产品,在找回密码的操作上会流程更长,门槛更高;如中国移动更改电话卡密码要求用户提供最近3个联系过的联系人电话;QQ号申诉需要提供3个QQ好友的验证等



【流畅性】

设置门槛验证用户身份,保证用户安全的方式现在已经相对成熟了。很多产品的找回密码流程设计都是用上述几种方式的组合搭配。但过程中如何保证不因流程冗余而骚扰用户呢?



对于PC端产品来说,除了基础的用户填写信息外,在防刷机制上,可以根据用户当前的网络情况,如果网络环境好,可以采用拖动滑块填补图片的方式,提供用户一张较为有趣的图片,附加其它有趣元素如计时,打败其它用户等,减轻用户完成身份验证的不适感;如果是网络环境较差,可以直接让用户简单快捷输入验证码完成验证



对于移动端产品来说,可以尽可能减少用户在单一步骤上填写的信息量,每一步只完成一个操作,干扰元素少,指引性强的流程也能让用户轻松地完成整个找回密码的过程。
匿名
方平 保密 产品经理
目前无论在移动端或者PC端,用户的会话状态大都是处于默认登录的;所以在更换设备或者其他异常情况下继续登录,会出现忘记密码的情况。

现在分几种场景:

1. 用户的登录账号即是手机号码或者绑定了手机号码:对于这种情况,则可以在验证手机验证码无误之后,让用户设置新密码进行登录;

2. 用户登录的账号是邮箱或者绑定了邮箱: 则向对应的邮箱发送一个验证码,验证无误之后,让用户设置新密码进行登录;

3. 用户采用其他的账号进行登录:即既不是手机号码、也不是邮箱;则需要采用用户的行为特征或者在体系中的社交关系确定;确认完毕之后,设置新密码进行登录;
匿名
舞风 无双科技AnG 数据产品经理
早期互联网产品的密码找回流程,常见的方式是设置密码保护问题;通过设置若干个问题,用户可以选择自己尚且还记得住的问题填写正确答案后即可重新输入密码。这就自然引申出一些问题。

1. 要设几个密保问题,多了很麻烦,少了可能把密保问题的答案也忘了,那还是没法找回密码;

2. 在哪里安放设置密保问题这个功能; 放在注册流程显然影响注册流程转化漏斗;将其独立一个模块,用户一般懒得去设置;将其填充在“补全信息”的功能流程中一般还行,在用户刚注册的一段时间内做出提示,或者作为一些功能的前置条件也是不错的解决方法。不过这样可能要涉及一个权限控制的概念,哪些功能可以把密保问题作为前置条件,这也与业务和用户习惯有密切联系了。

3. 即使这些问题用户全部都能接受,不影响产品体验和商业收益,仍然有个漏洞,用户的熟人可能还是能够回答出密保问题



随技术发展,开始使用邮箱和短信验证码的方式进行身份校验;这不仅仅是技术提高后简化了找回密码流程,这样设计的逻辑根源在于:我们认为能够登录用户另一个账号的人,我们更相信他就是用户本人。当然,不管用任何方式,都还会有需要进一步完善的问题。

1. 短信(邮箱)验证功能被刷。这种情况无非两个原因,一种是邮件中可编辑的字段过长,导致攻击者企图通过你的验证信息来散播信息,比如广告。这只要剪短可编辑的字段长度,一般就没问题了; 另一种是没有做频次相关的控制,攻击者恶意要增加你的财务或机器成本,这种就比较麻烦,IP限制之类的技术手段一般很难精准的限制,可能会有漏网的,可能有误伤的。不过一般来说,一个IP、session、token在一段时间内可发起的验证信息请求是会做限制的,比如一分钟最多发3次验证码

2. 页面验证码应运而生,甚至听说过有人研究了十几种验证码的,非常佩服。然而有的体验极差,正常人类一般是没法通过的,感觉那种验证码不是用来做安全控制的,是用来做物种分类的,没有复眼看不出来;有的则比较容易被破解,诸如图像识别之类的算法可能对一些类型的验证码有很强的破防能力。个人认为淘宝现在的滑动验证码挺好的,暂时没想到有什么常见的方法可以破除,用户体验也还好



最后是一些设计相关的技巧和新技术方面的使用。比如指纹识别,虹膜识别等技术不仅可以在找回密码上大大改善体验;在一些场景中,直接用识别技术作为身份校验也可以提高功能流程的流畅度。 手势密码等也都是相当不错的方法,不过相应的各种技术都会在体验和安全性方面的问题,不多赘述,有兴趣大家一起多交流

匿名
Lavin_H 上海 | 直播 产品经理
早上好(趁早上上班前打开PMCAFF混个活动资料)

关于密码找回设计的几个看法

1.手机/邮箱验证码

目前主流的账号体系都会以手机号或者个人邮箱作为账号体系的核心,所以发送验证码这个设置的目的就是为了验证找回密码的操作人是用户本人,在安全性上有了一定保证,同时也满足了当前用户的习惯。



2.安全性问题

用户在注册账号时可以让其添加安全性问题,这样即使在手机号注销或已经更换手机号的场景下,也能应付。



3.结合软件中的特有因子

找回密码设置门槛的目的是为了辨识用户,那就可以结合项目中特有的一些点来做用户验证。

例如:

社交软件:可以利用用户的常用联系人来做辨识 (如微信号在其他不常用设备登陆的验证)

视频直播:可以利用用户收藏的主播来做辨识,如果无收藏,则可再去验证手机号等唯一标识

基于LBS:可以利用用户常用的地点或区域来做辨识,当前仅仅是一个设想,目前还没有看到哪一款软件

是这样来做的,这样做要求定位精度高并且采集频率活跃

其他:因各软件属性不同,举一反三



4.结合第三方

如果账号是基于第三方登录,如QQ登录来建立的,那同样可以验证第三方登录的用户openID,然后再去用户表里做匹配,达到辨识用户的作用。



对于主流的设计流程来说,手机验证码算是比较高效的方式。个人认为这块不用太纠结,跟着主流走,用户已经习惯这种一成不变的方式,必然是这样的方式高效简单易懂。你只需结合软件本身,再做一些安全性校验和特殊性场景验证即可(手机号丢失怎么办?)。



暂时想到这么多,草草的打了些乱七八糟的东西,还望指正。
匿名
蚂蚁呀嘿 快没了 要换了

(一)

首先,用户在找回密码时,心情是略带急躁、不平稳的。这时候要避免大量的输入,特别是需要大量调取记忆内容的输入项。

所以,找回密码设计的核心之一是:找出账号和密码之间最核心的关联关系,给用户最简化的流程。

如果你的账户体系是单账号登录体系(如只使用手机账号作为登录账号),除了要有使用短信找回密码的入口,还需要有申诉入口(人工处理)。比如,手机换号就是挺蛋疼的事情。

流程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,可以显示密码,松开则隐藏。

再强调下,修改密码最重要的是逻辑健壮,避免越权修改漏洞。

匿名
bhc lowbe 产品经理

先不要想怎么平衡安全性和体验,先考虑具体产品。

如果是金融类产品,账户里不是躺着7位数就是坐着8位数的软妹币,我作为产品经理怎么敢为了体验而在安全性让步,我该做的是尽可能提高安全性,不惜牺牲体验。(一想到用户因为找回密码流程漏洞而损失了1,000,000,我就吓得尿裤子)

so

账户内有高价值内容(隐私数据、资金、有价证券等等)的产品:

考虑安全性,考虑安全性,考虑安全性。使用的工具可以有:短信(邮箱)验证码;密保问题;基于历史使用记录(比如最近一笔交易时间,最常用银行卡号等)的问题。

普通产品:

场景很可能是用户火急火燎想登陆后使用产品(比如我要把某条读过的网易新闻发送给同事,但是我搜不到了,可是我有收藏过),但是想不到密码了,所以找回密码。如果这时候你让用户5分钟还找不回密码,那你就等着用户去不鸟你把。

产品要尽量简化找回流程,简单的短信(邮箱)验证码和简单的防爬就够了,当然,要设计好手机号(邮箱)无法使用这个子流程。

匿名
SnsI 你猜~ 产品
1.短信验证,用户发送验证码到指定号码,在用户点击发送短信按钮后跳转短信发送界面,将验证码,指定号码自动填充,只需用户点击发送

2.短信重置密码,用户点击忘记密码后,进行短信验证,随后系统随机密码发送至用户手机
匿名
我是PM啊 你猜什么科技公司 产品经理
1.先说说用户在忘记密码的时候系统为什么不直接将原有密码发送至用户

一般有良心的网站保存用户密码是加密后保存的,也就是说网站是不知道用户的明文密码,如果网站知道用户明文密码也不会傻到直接发给用户,因为这会给用户带来极大的不安全感造成用户恐慌,其次是容易造成二次泄露;

2.对比一下当前几款软件的忘记密码-找回密码的业务流程

a.腾讯QQ

腾讯QQ的找回密码共有三个流程(PC端将整个流程都流程化展示出来让用户提前知晓,消除了用户的未知恐惧感):填写账号(系统自检测)-身份验证(验证手机号码)-设置新密码最终完成;在验证手机号码的环节qq有一点细节做得很好就是未显示完整的手机号码,而是让用户输入完整的手机号码进行验证,在一定程度上解决了用户手机遗失造成的非法修改密码的问题;

b.新浪微博

新浪微博在找回密码的第一步账号验证中输入了登录名后要求输入图形验证码进入下一步,第二步是根据登录名的类型进行不同方式的验证(邮箱与手机),验证通过后设置新密码;

3.谈一谈看法

上面对比了一下微博和QQ的密码找回,整个业务流程很简洁,流程也基本一致,包括了登录名的验证、身份的验证,通过两重验证让用户觉得隐私以及账号得到了保护,但又没有太过冗杂的操作,比如身份验证,只需要用户输入注册的手机号码或者邮箱通过输入验证码即可修改密码,简单方便;

总之,通过身份的验证保证了账户的安全,而简单清晰的密码找回流程(将流程展示出来告知用户找回密码需要几步)不打扰用户操作,快捷方便。

匿名
lhtzwj 上有财金 产品规划室 产品经理
说在前面:

互联网用户注册,就会有密码找回。密码找回功能里可能存在的漏洞,而这些漏洞往往产生非常大的危害,并且这种漏洞在非常多的大互联网公司中都出现过。大家都懂得~



所以:

1.密码找回要保护客户隐私,第一步进行设备验证和用户自己的的认证;

2.密码找回界面的设计,需要直接明了,逻辑需要清晰明了,每一个步骤要考虑合乎规范;

3..找回的渠道多样化,例如手机号码找回;邮箱找回;密保问题找回;人工找回。
匿名
星⭐星 中国电信集团 产品经理

第一考虑安全性

第二做好用户体验

匿名

让用户表述之前操作的一些行为,或者平时操作比较频繁的动作

匿名

发表评论,请先 登录 · 注册