如何设计“找回用户帐号”功能
因为《腾讯帐号申诉的用户体验》一文中好多人觉得腾讯申诉是世界级先进的,并让我拿出一个找回用户的帐号的功能来。本来不想写的,因为大家看看其它系统的就行的,但是,很明显有些人就是很懒,也不会思考,而且不会观察,所以,我就只好写下这篇科普性常识性的文章。
在行文之前,我得先感谢腾讯公司的至少30名员工在《腾讯帐号申诉的用户体验》一文后的回帖(我STFG(Search The Fucking Google)看到了你们使用的那个固定IP在各个大学论坛上的腾讯的招聘广告),我感谢你们主要有两点:
你们有半数以上的人留下的是gmail而不是QQMail/Foxmail的电子邮件,这点让我感到很欣慰。
你们在加班到晚上11点的时候都能在本站回复,的确如你们的Andy Pan所说,你们的核心竞争力很强,包括水军方面。
好了,让我正式谈谈这个设计。找回用户帐号通常就用三个事就可以了:邮箱,安全问答,手机。
邮箱,安全问答,手机
大多数的系统都会使用邮箱和安全问答,这足够了,很多系统直接用邮箱做帐号名(Apple ID,Facebook,新浪微博 ….),这样一来,就算你的系统口令被盗,帐号的是改不掉的,于是你可以用邮箱找回(注:这些系统都会验证你的邮箱是否正确)。但是,如果用邮箱做帐号,会导致你的邮箱暴露了,这样为成为垃圾邮件的受害者,而且如果你还比较2的把邮箱的口令和帐号的口令设置成一样的,那么就相当坑爹了(你可以看看本站的这篇文章——如何设计你的口令)。所以,但凡是用邮箱用为帐号的系统都不会让人看到你的注册邮箱,比如,大家就不知道我新浪微博帐号注册的邮箱,就算是知道也应该是受信的人知道(新浪微博帐号的邮箱地址的默认可见度是“你关注的人”)。
这里要说一下,Google Mail使用的是电子邮件,安全问答 和 手机。你可以使用其中一种找回口令。gmail最漂亮的用户体验是其会提示你,你绑写的邮箱(哪家公司的邮箱和帐号名的第一个字母)和手机(3个尾号)。MSN和gmail相似,也会提示你绑定的邮箱,也可以使用手机,还可以使用你设置好的受信PC,以及通过客户支持(通过客户支持——收集你注册时用的名字,生日,国家地区,安全问题,使用过的口令,最近发送过的邮箱标题,联系人等,或是你绑定过的信用卡信息,但是不会有身份证)。
使用手机的一般是安全性比较高的网站,比如:淘宝、Gmail等。这样,使用手机找回口令也不错。因为你注册的安全问答你可能会忘了,你的绑定的邮箱也可能忘了口令,而很多木马可以盗取你的这些电脑上的安全问答或邮箱口令,但是这些木马程序盗不走你的手机(注:在移动互联网时代很可能会盗取你的手机上的信息,但是也盗不走你的手机号——无法像邮箱那样改个口令就盗走了)。你会说,手机还不是会丢失,但是你要明白,你丢失的手机,你是可以停机的,可以通过你的手机密码卡或是身份证恢复你的手机号的。另外,使用手机的好处还在于,我的系统不需要收信你的真实信息(如:姓名,身份证,住址等),这些真实信息的验证交给移动运营商验证就好了。在程序设计的里,我们把这种事叫“解耦”。Amazon就一种通过电子邮件,然后通过你使用过的信用卡后四位,以及帐单的邮寄的邮政编码,如果你的邮箱变了,没问题,打电话给客服吧,客服会问你的钱行卡号和帐单地址,电子商务的好处就是可以有信用卡或银行卡来恢复号。,因为这——把用户的真实信息“解耦”到了银行,并“耦合”和银行方面的安全策略。很明显,银行和移动公司的安全级别更高,而且用户也更信任他们。最好不要自己收集用户的真实信息,要是丢失了,你就麻烦了(在国外你就要被起诉了)
在这里,你可能会有疑问,如果我的帐号口令丢失了,那么盗取者会进入我的系统改我的邮箱,改我的手机,改我的信用卡等,那不也一样吗?我想说,对于邮箱和手机,其和密码的级别一样,你改密码的时候,你都要输入旧密码,所以,你改邮箱和手机的时候也要使用旧的邮箱和手机。关于你绑定的银行卡或信用卡号,就算是自己也看不见的(只能看见四个尾号),这就就可以防盗了。当然,盗电子商务帐号的人一般会用你一帐号买东西,但是其会遇到另一个麻烦,那就是要面对银行方面的审计工作——1)对于银行卡通过银行的网银,银行的安全系统会帮你审计。2)对于信用卡则要受到信用卡验证和签名的验证,还能让商家会帮你检查信用卡签名是否正确。
一些人说,QQ的帐号申诉过程的“美妙”在于其他尽可能多的收集你的信息,这样一来,反而是安全的,因为密码容易被盗,而你的那么多的信息则不容易被盗。这样认识只对了一半。真正的安全系统是协同整个社会的安全系统做出来的一道安全长城,而不是什么都要自己搞(当然,我们都知道腾讯的DNA就是什么都要自己搞,连FBI和CIA的事也已经在搞了),什么自己都搞反而不安全了。
其它讨论Q&A
问题一:通过申诉找回帐号靠不靠谱?
明显不靠谱,而且还很愚蠢。这反而成了恶意者的温床。他人可以通过申诉让正常人的帐号失效,这是一件多么愚蠢的事啊!(我的QQ帐号前两天不就被这样攻击了吗?)
问题二:通过联系人恢复帐号靠不靠谱?
不全然靠谱,因为你的QQ总是会有陌生人加你,你的邮箱联系人也会有一些你不受信的人。那些人可能就是攻击者的小号。所以,如果你要通过联系人的话,就不要像QQ或MSN那样坑爹的做法,让用户自己来选。而是要像Facebook那样的做法——系统随机挑些人来让你认。
问题三:在注册时设置受信的联系人靠不靠谱?
看似靠谱,但是个人觉得还是还一点问题。因为受信者通过电子信息无法分辨是本人还是盗号者,还要受信者实际联系一下对方。这就好像我们在手机号存电话号码的时候,写上了爸爸,妈妈这样的字眼,这样当恶意者拿了你的手机后,就可以向你的家人敲诈了,因为其直接就可以叫出对方那头的人和被攻击者的关系。
问题四:恢复帐号的时候收集用户的真实信息靠不靠谱?
这要看是什么情况了。如果用户在注册时提供了这些真实信息,就靠谱,如果没有就相当不靠谱。试想:你去银行开户存钱的时候,银行没有让你出示身份证,只让你设了个口令。然后我就可以用我的身份证去重置你的口令。你觉得这个事是不是相当的坑爹?!
问题五:小白不懂邮件,不懂安全问题,不懂绑定手机啊?
那就用耐心地客服教导这些小白(可参看银行等机构的做法——强制用户输入8位以上的口令,强制使用U盾才能进行大额转帐),提高他们的能力和对安全的认识,当有一天这套东西形成社会标准的时候,安全才会真的到来。安全的问题本来就是双方的事,只有大家都有安全意识,才能做得好。而不是迁就用户。还是Henry Ford的那名话——“如果我问用户要什么,用户会说他要一匹更快的马”,所以这世上也就不会有汽车了。QQ不应该为降低用户安全意识起推动性作用。
问题六:我的经历是什么样的?
我基本不上QQ,我上QQ都是被朋友和同学逼的。因为上周四我想写点关于腾读用户体验的东西,所以我才上QQ想看看,结果发现上不去了,说是帐号被投诉了,让我申诉,我猜想估计和我最早发布的关于腾讯的文章有关系。我1999年来注册的这个QQ号根本没有提交过什么身份证或是地址系统之类的东西,我曾经绑定过手机,大概在5年前绑定过。
于是在走申诉流程的过程中,腾讯说的绑定的手机没有被验证过,我还记得曾经我使用我的hotmail邮箱代替过我的QQ号,不过这些在被投诉的面前都不能用了。而我感到腾讯无法知道我提交的这些信息是否真实,又因为我以前曾经帮朋友注册过QQ号(我这些朋友就是腾讯员工说的小白用户),所以,我就用一些看上去比较真实的但实际是假的信息,并用帮人注册的这些QQ号成功申诉回来了。
有的网友说我不分不清找回密码和申诉的差别,我在这里想说,你分明绑定了手机,但是当你发了短信后却被告诉你的手机没有被验证过。这个就很扯了。
于是,我才意识到QQ的这个申诉过程相当的不安全。关于一些细节问题,还请我们的我们腾讯的员工@larry同学给大家更多的细节。
问题七:QQ还有什么样的坑爹的Use Case?
有两个朋友在回复中说到了两个有意思的比较坑爹的Use Case。
@gqjjqg 说,他有个朋友被恶意申诉,有段时间和这个恶意申诉者来来回回地申诉这个QQ号,搞了一个多月都没有搞定。最后只得和那个恶意申诉者达成和解才解决了这个事。
@Jack Yang说,他有个朋友在网上买了一个QQ号,没过几天就被申诉回去了(毕竟那是别人用过的),然后人家再接着卖,怎么申诉都申诉不回来。欲哭无泪。
可见,在QQ的申诉流程下,什么密保,什么手机绑定,都成了浮云。
(如果你还有什么样的问题,我可以在继续更新并回答你的问题)
——————————
希望你现在明白,关于腾讯的帐号申诉过程,看上去相那么回事,实际上漏洞百出。当然,我不能说腾讯是愚蠢的,因为人家搞得那么大的企业,我只能说人家是在下一盘很大的棋……
转载于酷壳CoolShell 无删改 仅以此纪念陈皓(左耳朵耗子)
这里的存活,指的是还有很多人用。 你会提名什么软件?( 2 个) Linux 一定会,git 也许会 ping 会 jdk im 类的 ... linux 什么时候成…
go 的实现 package main import "fmt" type M struct { Num int64 } func T1() { fmt.Printf…
现状:服务部署在海外,因为业务诉求想接入国内支付宝的产品能力(先前产品自行调研),后续我参与沟通,被技术客服告知不支持,要通过国际平台接入。 目前想到两种方式为海外业务接入支付…