注册登录的设计:基于33款APP的注册登录分析(一)
作者为解答自己关于注册登录设计的疑惑:“注册登录流程基于不同行业、不同类型、不同的安全要求,是否存在最优的设计方案?”,对33款APP进行7个维度的对比分析。本文主要从注册路径的选择、注册流程的设计、注册内容的注意方面给出了总结建议。
写这篇文章,主要是想解答自己内心的疑惑:注册登录流程基于不同行业、不同类型、不同的安全要求,是否存在最优的设计方案?
在过往2年多,独立设计了几款产品,但对于注册登录流程,一直没有深入研究,心存疑虑。趁着最近的空闲,分析了33款APP的注册登录之后,这篇文章诞生了。
我将33款APP分为了以下7个维度进行对比分析,这一篇主要讲了3和4,剩下的内容,会在后续的文章中进行说明。
本文目录
- 33款APP说明
- 为什么需要注册
- 注册是否必须
- 注册应该如何设计
- 注册的内容
一、33款APP说明
这次选择了医疗、互金、记账、内容、电商、社交等领域相对头部的33款APP进行对比分析。
头部产品坐拥大量的用户数据,所做优化有大量数据作为支撑,分析这类产品,可以为产品优化提供很大参考。互金选择比较多,主要考虑这类产品对账号安全会有较高要求。
二、为什么需要注册
早期的网站,很多都是无需注册的,比如使用百度搜索、浏览黄页…
随着互联网的发展,用户对应用提出了更多的个性化需求,开发者需要分用户记录数据…
于是,账号系统的必要性越来越明显。
三、注册是否必须
注册是为了创建账号系统来分账号保存用户数据,然而并不是所有的应用都有这个必要性。
因此,我从这一维度将注册分为:无需注册型、需要注册型。
1. 无需注册型
例如一些纯工具类的应用,比如计算器、闹钟、天气等应用,如果不需要区分用户进行数据记录和分析,则可以不注册。
2. 需要注册型
有注册才能建立账号系统,才能准确区分用户,进行数据收集和分析,才能积累有效数据提升产品价值,为后期的产品优化提供数据支撑……因此,对于大多数应用而言,注册的存在是非常有必要的。
四、注册应该如何设计
撇去权限获取、注册协议(后续文章会写),注册设计主要包括注册的路径设计、流程、内容设计。
1. 注册的路径
注册路径,是指用户从打开APP后,到达注册的路线:是用户进入APP就要注册,还是看了部分内容、做了某些操作时再进行注册?
基于此,将注册的路径分为两类(图示以安装后首次使用为例):
立即注册:即进入APP后,必须完成注册,否则无法看到应用的内容。
延后注册:无需注册就可以体验产品的部分功能,在触发某些功能时才要求注册。
延后注册有两种比较常见的设计方式:启动/引导页直接进入首页,或者在启动/引导页之后设计一个可跳过的注册/登录页再进入首页。
33款APP的分析结果如图,只有4款APP采用了立即注册型,分别是:支付宝、蚂蚁财富、微信、陌陌。
立即注册,就像让用户在不知道东西长什么样的情况下,就让他们掏钱买单,设想一下有多少人愿意?
除非,这东西不用看就知道什么样,所以可以看到,33款产品里,支付宝、微信、陌陌这么做了(就是这么牛),而蚂蚁财富因为功能在支付宝都有,所以下载使用的都是精准用户,采用立即注册也没毛病。
立即注册的产品里,有两类比较特殊的:申请注册(如大多数To B产品,需要提交资料审核通过后才可开通账号,如初期的bilibili,需要回答大量问题之后才能申请注册)、邀请注册(必须填写邀请码才可完成注册,如每日一淘),这类产品因为产品阶段、用户特性、商业模式等原因,而选择了比较特殊的注册方式。
所以分析后认为,除非产品知名度已经相当牛逼,否则还是尽量让用户“先试用再买单”吧,何况微博依然是延后注册。
特别说明:在本次调研中发现,有7款产品(微医、京东金融、壹钱包、今日头条、京东、淘宝、微博)在启用/引导页之后专门给出了《用户隐私政策》说明页,1款产品(支付宝)在用户输入手机验证码后给出了此页面,应该是为了符合《网络安全法》的相关规定。
《中国人民共和国网络安全法》第四十一条网络运营者收集、使用个人信息,应当遵循合法、正当、必要的原则,公开收集、使用规则,明示收集、使用信息的目的、方式和范围,并经被收集者同意。网络运营者不得收集与其提供的服务无关的个人信息,不得违反法律、行政法规的规定和双方的约定收集、使用个人信息,并应当依照法律、行政法规的规定和与用户的约定,处理其保存的个人信息。
2. 注册的流程
注册的流程,是指用户在进行注册时的操作流程,可分为:分步注册和非分步注册。
非分步注册:
指注册所需的内容在一页(一步)内完成,比如完成注册需要用户填写手机号、短信验证码、密码,而将这些内容设计在一页内,点击提交即完成注册,这类视为非分步注册。
分步注册:
与非分布注册对应,即注册所需的内容需要好几个页面来完成。比如完成注册需要手机号、短信验证码、密码,然后分别放在3个页面,用户通过点击下一步来完成,即视为分步注册。
本次统计结果如图,分步注册占大多数,为79%。
据称,Facebook曾针对分步注册与非分步注册做过A/B Test,结论是分步注册的转化率远高于非分步注册。不过Facebook属于社交类产品,注册流程中必须录入的内容较多,除了手机号,通常还需要昵称、性别等个人信息,分步注册确实是更好的选择,比如这次样本中的社交产品:陌陌、最右、微博都采用了分步注册。
但是,对于其他类型的产品,分步注册的提升效果,可能并不会“远高于”,特别是现在大多数产品都采用延后注册,用户选择注册时,已经对产品有了认可,这时会更有耐心去完成注册。
当然,分步注册的好处确实显而易见,可以将必须字段和非必须字段分页设计,非必须字段的页面可以跳过,可以减少单页面的内容,降低用户的感官压力…因为页面的填写内容更少,所以可以展现更多其他辅助内容,可以设计的更简洁大气…
但过多的分页,也会给用户一种“怎么没完没了”的感觉,所以产品经理需要根据实际情况对注册字段进行分拆和组合,合理的进行分步设计。
五、注册的内容
注册的内容,指用户注册时需要填写的内容,常见的内容有:手机号、短信验证码、登录密码等,接下来会一一进行说明。
1. 邮箱
在PC时代,邮箱是最主流的用户注册信息,因为符合当时的用户使用场景。但随着移动互联网的发展,移动应用几乎均使用手机注册,毕竟注册一款移动产品,还需要打开手机邮箱,或者用电脑打开邮箱,对于用户体验是不友好的。当然,某些移动应用由于海外用户等因素,依然支持邮箱注册。
在本次调研中,只有随手记支持邮箱注册。
2. 手机号码
手机号码作为现在最常用的用户注册身份信息,主要是因为手机号本身的特性: 唯一性、真实性(实名认证)、可联络,符合了移动互联网的使用场景和需求。手机号不仅可以确认用户身份,还可以在必要时联系用户、通过通讯录导入社交关系等。
不过,手机号码属于用户比较敏感的信息,多少都会有些介意。好消息是,根据《网络安全法》相关规定,开发者可以以此为由,要求用户绑定手机号。
《中国人民共和国网络安全法》第二十四条 网络运营者为用户办理网络接入、域名注册服务,办理固定电话、移动电话等入网手续,或者为用户提供信息发布、即时通讯等服务,在与用户签订协议或者确认提供服务时,应当要求用户提供真实身份信息。用户不提供真实身份信息的,网络运营者不得为其提供相关服务。
在本次调研中,所有APP均支持手机注册。
3. 防刷安全验证
一般是为了防机刷而存在的,如图形验证码、滑块验证、箭头路线验证、google人机身份验证等,这些验证也是可以破解的,而越难破解的防机刷验证,用户的操作成本也越大。所以,一般在非必要情况下,会优先采用系统限制来规避类似风险。
比如:设置60秒的短信验证码发送间隔、对同一IP或者同一手机设备设置每日短信验证码下发上限等。目前也有聚合类的移动安全产品可以选择,从更多维度通过大数据分析进行风险规避,比如阿里聚安全。
在本次调研中,注册时获取验证码需要人机验证的有:京东、京东金融、人人贷理财、分期乐、小米贷款和微信6款产品,占整体样本的18%。
4. 短信验证码
短信验证码可以确认用户注册手机号的真实性、归属性、可用性,防止无效注册,同时可以便捷的帮助用户进行密码找回、修改密码等操作。但是,短信验证码也存在一些弊端。
比如可能出现延迟,甚至用户无法接收到的情况,所以部分产品会附加语音验证码、上行验证码来解决这一问题。上行验证码,即APP会给到用户一串随机码,要求其发送到某个指定的号码,微信的注册就是采用这一方式。
4位和6位验证码,有什么差别?
APP在注册、登录、找回密码环节的短信设置或有差异,以下数据均基于注册时接收到的短信内说明的有效期:
分析可以看到,选择6位验证码的产品还是大多数。但是基于我个人的分析和了解,只要结合验证码有效期、手机号单位时间内可以进行短信验证码的次数上限,4位验证码和6位验证码在安全系数上,没有太大差异,反而4位验证码会减少用户的输入成本。如支付宝、今日头条、抖音都选择了4位验证码。
5分钟和30分钟有效期,有什么差别?
上图是短信验证码有效期的分析结果,未说明就是指在验证码短信中 ,没有说明有效期是多久,这部分占比最多,为49%;其次是5-10分钟,占33%。不同时长并没有特别的行业特性,比如互金类的,2分钟、5分钟、10分钟、30分钟都有。
结合用户的实际使用场景,对于用户而言,说明时长的意义确实不大,毕竟正常用户用自己手机操作的话,都是一气呵成,不会关心有效期,也不需要太长的有效期。
因此,是否说明,对真实正常的用户来说并不重要(比如我一般都不看有效期,看到验证码就输入了)。
不过,不论说明与否,2分钟确实太短,稍微走一个神可能就过期了。而太长的有效期,就增加了验证码泄露的风险。因此,结合场景与分析结果,认为5-10分钟会是比较普适(普遍场景都比较适合)的区间。
当然,短信验证码也可以有更精细的设定,根据不同的场景业务,结合不同的安全需要,可以设置不同的有效时长和验证方式。
比如微博的注册验证码,有效期说明为30分钟,登录验证码的有效期未说明,修改密码时需要上行验证码,找回密码的验证码有效期说明为5分钟。
通过对微博验证码深入分析后发现:
- 获取微博的登录验证码并使用后,退出登录,再次获取登录验证码,如果上一次登录时获取的验证码还在有效期,那么仍会发送上一次已经使用过的验证码;
- 微博找回密码的验证码虽然说明有效期是5分钟,但是在7分钟后重新获取时,还是得到了一样的验证码。当然,不排除在短信中写更短的有效期,是为了让用户尽快完成操作这一可能。
设定好短信验证码的验证规则,才能更好规避机刷及安全风险,常见的规则如下:
- 短信验证码发送间隔不低于X秒(目前普遍为60秒),用户端有相应展示
- 同一业务,单位时间内(如1小时/1天/…),对同一手机号/手机设备下发次数不超过X次
- 同一短信通道,单位时间内(如1小时/1天/…),对同一手机号/手机设备下发次数不超过X次
- 超过下发限制时,可改为上行验证
- 同一手机号,单位时间内(如1小时/1天/…),进行同一业务的短信验证,错误次数不可超过X次
根据不同的场景业务,结合不同的安全需要,可以设置不同的次数限制。
这里提一个手机针对短信验证码的安全处理,就是在锁屏状态下,收到短信验证信息时,短信验证码显示为****。
不然,只要拿到用户的手机并知道手机号码,就算无法进入手机,也可以完成注册了。
5. 登录密码
先来思考一个问题,登录密码是必须的吗?
登录密码存在的意义,是为了验证用户的身份,确认是该账号的真实持有者在进行登录操作,防止账号被他人盗用。
验证用户身份的方式,从过去就不止一种。比如PC时期的邮箱验证,但是每次登录都进行邮箱验证,对用户来说太麻烦了,登录密码是属于比较便捷的方式。但发展到移动产品,获取短信验证码的便捷程度,与输入登录密码可以说不相上下(抛开可能的延迟)。
就功能性来说,登录密码已经可以被微信授权和短信验证所取代。
微信(第三方)这类产品本身就有很强大的安全机制,为接入授权的产品提供了前置的安全保证,同时微信授权几乎不会有延迟,而且免费。短信验证码虽然有一点的费用,还可能出现延迟,但对于无法/不愿接入微信登录的产品,是退而求其次的选择。
如果无法接入微信等第三方授权登录,那么登录密码的设置,会是对短信验证码延迟问题的一个补充解决方案。
上图是注册时是否需要设置登录密码的分析结果,其中需要设置密码的有9款都是互金类的,互金类由于均没有接入微信登录(国家/公司政策的原因),因此登录密码会是对验证码登录的补充。
结合结果可以认为,登录密码并不是必须的。密码的保留,更多是出于经济的考虑,以及用户行为习惯的延续,同时可以作为短信验证延迟等问题的补充方案。
然而,随着黑客技术与计算机处理能力的不断提高,过于简单的密码,很容易就可破解,所以设置密码的限制要求越来越高,因此,用户输入和记忆成本也越来越大,导致大家更愿意使用同一个密码,这样又增加了密码的不安全性。(进一步了解可搜索关键字:撞库攻击、彩虹表)
所以,要么别设置密码,要么设置一个安全的密码,且尽量避免所有应用使用同样的密码。
如果要设置密码,怎么样才够安全呢?
要了解怎么样的密码“够安全”,就需要了解密码的加密机制。开发者一般通过Hash加密来保证用户密码在传输和存储过程中的安全,也就是用户输入的密码,并不是以明文密码的形式(密码原文)进行传输和存储的,而是通过Hash加密后的十六进制的随机字符串。
由于Hash算法的不可逆性,因此就算数据库中保存的用户“密码”失窃,不法分子也很难破解出密码原文。但由于黑客技术以及计算机处理能力的提升,部分过去安全的加密算法,也变得不再安全,对于过于简单的密码,在很短时间就可以被破解。
因此,为了增加密码被破解的难度,密码的位数越来越长、密码的复杂度也越来越大,所以现在大多数密码都要求8-16位,必须包含数字和字母,甚至标点符号。所以,并没有绝对安全的密码,只有在现阶段相对安全的密码,而且还要看开发者的安全措施是否到位。
相对安全的密码规则,可以参考平安一账通、京东的设置规则:
京东的密码设置规则:
- 6-20位字母、数字或半角符号组成
- 不能是10位以下纯数字/字母/半角符号
- 字母需区分大小写
平安一账通的密码设置规则:
- 8-20位,数字、大小写组合,不可连续4位相同
- 建议不要使用手机号、证件号、生日
- 建议定期修改
对于密码,如果不需要,就不用强求用户设置,因为目前大多数APP都会一直保留登录状态,除非用户主动退出,那么登录密码是一个使用频次很低的字段,但是却需要花大功夫去保护它的安全。如果一定要设置,就要用户设置的安全系数更高一些,不然也就失去了密码的意义,甚至反而增加用户账号被盗用的风险。
当然,对于是否设置密码、设置密码的长度,也要综合考虑用户登录行为在账号安全中所占的比重。
例如:借款类互金产品,在用户注册后,发生借款行为时,还需要大量的安全和信用验证,因此,注册和登录流程是可以简化的。
如果要设置密码,规则说明要清晰准确。
在分析过程中发现,部分APP的说明非常不清晰,导致输入一串密码提交之后,看到错误提示,又要重新输入,甚至有的看到错误提示也是一脸懵逼。
比如京东金融的密码设置说明只有“6-20位”,输入6位纯数字后,却又提示“该密码有被盗风险,请重新设置”,然后,请问用户该怎么做?
还有的说明是:“包含数字、字母或字符”,但是真实需求却是:“至少包含数据、字母或字符中的其中2种”,不准确的描述会让用户无所适从,大大影响用户的注册率。
产品经理在设计登录密码时,要根据产品所处的阶段、所需要的安全级别,和研发充分沟通,设置合理且安全的密码要求。虽然账号安全更多属于研发的工作,但产品经理了解基本原理,才能结合产品,设计更合理的用户注册流程。
6. 其他
不同类型的产品,可能还会有不同的注册内容,比如社交类一般会要求用户设置头像、昵称,互金类往往需要实名认证等,这些都要根据具体产品类型再进行深入分析及设置。当然,不论什么产品,都建议让用户尽快完成注册,然后再在之后的操作中,通过限制操作等引导其完成其他资料的设置。
六、注册设计练习
通过上面的分析,相信大家可以对注册的路径、流程、内容有一个比较全面的了解,但是真正的掌握是需要刻意联系的。建议大家选择某一个/某几个类型的产品,多多练习设计。
作者:Arya.阿雅,公众号:aryawang419
本文由 @Arya.阿雅. 原创发布于人人都是产品经理。未经许可,禁止转载
题图来自Unsplash,基于CC0协议
一直有个疑问就是注册的时候如果不设置密码,如果用户换手机号了,那么如何登录?
真的很棒,感谢作者!
有用
本系列文章已经写完了,大家可以搜索查看二和三。
精品
谢谢 好细致哦 要慢慢看
短信验证码内部工作流程:
1.使用random函数随机生成一个验证码,位数可以自己定(一般是4位、6位验证码)
2.调用短信运营商的接口,并向其发送手机号和验证码数据。
3.短信运营平台初步审核将信息发送给三大运营商的某一家。
4.运营商最终审核,将信息发送到用户手机上。(短信接口的参数一般包括:目标手机号,随机验证码(或包含失效时间),平台接口地址,平台口令等;)
5.网站或app保存接口返回的信息
6.服务器端会将这些信息保存在会话控制器Session中,作为后期的验证使用。
7.网站/APP接收用户填写的验证码信息
8.服务器端判断用户提交的验证码是否与储存在会话控制器Session中的信息一致,如果一致就通过;否则就验证失败。(也可以同时验证信息的失效时间)
网上搜到的短信验证码机制,和大家分享一下。原文地址:http://www.sohu.com/a/260189258_629246
写的超棒~感谢
谢谢支持~ 😉
挺细致的,不错不错
谢谢支持~ 😉
就算每次获取的验证码都是相同的也是要收短信费用的,不存在省钱不省钱一说,而且有效期内发送相同验证码码的是占大多数的,微信、支付宝、facebook、twitter(找回密码中)等都是这么做的,所以做作者得出结论过于草率【大多数APP,当用户再次获取验证码时,都会发送全新的验证码,但微博不是,比如登录用的验证码,哪怕使用过一次,退出后再次登录,只要刚才那个验证码还在有效期内,再次获取,还是那个验证码……
微博找回密码的验证码虽然说明有效期是5分钟,但是当我7分钟后重新获取时,还是得到了一样的验证码……当然,不排除在短信中写更短的有效期,是为了让用户尽快完成操作这一可能;
总之,分析结果是:微博可真会省钱……】
在有效期内发送相同的验证码,是可以理解的,只要验证码没有被使用,避免用户产生混淆。但是我在使用过一次验证码之后,再进行相同操作时,又发送给我了,已经使用过的验证码,这个情况,在我分析的应用中,是只有微博这样做的。
“哪怕使用过一次,退出后再次登录,只要刚才那个验证码还在有效期内,再次获取,还是那个验证码……”这句话是重点噢。
不过“省钱”这个结论不太对,谢谢指出~
刚测试了一下,微信在登录和找回密码的验证码,确实是在有效期内,哪怕使用过后,也是发送相同的验证码,而且登录和找回密码是通用的一个验证码。想了一下,是会有这样的场景:(假设每次发送验证码,都发送新的验证码)用户点击发送验证码,但是发生了延迟,于是用户选择重新发送后,原来的验证码已经无效,但是此时用户收到了之前的验证码,于是输入了之前已经无效的验证码,这时系统会提示错误,用户又需要再次获取……
已经提交修改文章,谢谢指出。不过对于这里,我有一个疑问,在有效期内发送相同验证码可以理解,可以避免延迟或者过多的验证码可能导致的用户混淆。但是已经使用过的验证码,还是继续发送,我个人使用感受上会觉得有些奇怪。你怎么看呢?
其他32款APP是测试了注册流程的验证码,微博因为发现有些不同,所以进一步测试了登录的验证码,发现了这个问题。而微信在注册时,是采用的上行验证,所以没有发现这个问题。这里的结论确实草率了,谢谢指出。
BTW,【人人】为什么不把评论删除功能开放呢?回复之后不能修改,也不能删除,挺尴尬的。
讲解的可算是非常详细了,期待(二)! 😉
谢谢支持~ 😉
谢谢打赏的朋友,明早的包子钱有了 ❗
非常干活了
谢谢支持~ 😉
学习了 😉
谢谢支持~ 😉