如何设计“找回用户帐号”功能

jopen 12年前
     <p> 因为《<a title="腾讯帐号申诉的用户体验" href="/misc/goto?guid=4958201525842325932" target="_blank">腾讯帐号申诉的用户体验</a>》一文中好多人觉得腾讯申诉是世界级先进的,并让我拿出一个找回用户的帐号的功能来。本来不想写的,因为大家看看其它系统的就行的,但是,很明显有些人就是很懒,也不会思考,而且不会观察,所以,我就只好写下这篇科普性常识性的文章。</p>    <p> 在行文之前,我得先感谢腾讯公司的至少30名员工在《<a title="腾讯帐号申诉的用户体验" href="/misc/goto?guid=4958201525842325932" target="_blank">腾讯帐号申诉的用户体验</a>》一文后的回帖(我 STFG(Search The Fucking Google)看到了你们使用的那个固定 IP 在各个大学论坛上的腾讯的招聘广告),我感谢你们主要有两点:</p>    <ol>     <li>你们有半数以上的人留下的是 gmail 而不是 QQMail/Foxmail 的电子邮件,这点让我感到很欣慰。</li>     <li>你们在加班到晚上11点的时候都能在本站回复,的确如你们的 Andy Pan 所说,你们的核心竞争力很强,包括水军方面。</li>    </ol>    <p> 好了,让我正式谈谈这个设计。找回用户帐号通常就用三个事就可以了:<strong>邮箱</strong>,<strong>安全问答</strong>,<strong>手机</strong>。</p>    <p> <strong><strong>邮箱</strong>,<strong>安全问答</strong>,<strong>手机</strong></strong></p>    <p> 大多数的系统都会使用邮箱和安全问答,这足够了,很多系统直接用邮箱做帐号名(Apple ID,非死book,新浪微博 ….),这样一来,就算你的系统口令被盗,帐号的是改不掉的,于是你可以用邮箱找回(注:这些系统都会验证你的邮箱是否正确)。但是,如果用邮箱做帐号,会导致你的邮箱暴露了,这样为成为垃圾邮件的受害者,而且如果你还比较2的把邮箱的口令和帐号的口令设置成一样的,那么就相当坑爹了(你可以看看本站的这篇文章——<a title="如何管理并设计你的口令" href="/misc/goto?guid=4958187044205268303" target="_blank">如何设计你的口令</a>)。所以,但凡是用邮箱用为帐号的系统都不会让人看到你的注册邮箱,比如,大家就不知道我新浪微博帐号注册的邮箱,就算是知道也应该是受信的人知道(新浪微博帐号的邮箱地址的默认可见度是“你关注的人”)。</p>    <p> 这里要说一下,Google Mail 使用的是电子邮件,安全问答和手机。你可以使用其中一种找回口令。gmail 最漂亮的用户体验是其会提示你,你绑写的邮箱(哪家公司的邮箱和帐号名的第一个字母)和手机(3个尾号)。MSN 和 gmail 相似,也会提示你绑定的邮箱,也可以使用手机,还可以使用你设置好的受信 PC,以及通过客户支持(通过客户支持——收集你注册时用的名字,生日,国家地区,安全问题,使用过的口令,最近发送过的邮箱标题,联系人等,或是你绑定过的信用卡信息,但是不会有身份证)。</p>    <p> 使用手机的一般是安全性比较高的网站,比如:淘宝、Gmail 等。这样,使用手机找回口令也不错。因为你注册的安全问答你可能会忘了,你的绑定的邮箱也可能忘了口令,而很多木马可以盗取你的这些电脑上的安全问答或邮箱口令,但是这些木马程序盗不走你的手机(注:在移动互联网时代很可能会盗取你的手机上的信息,但是也盗不走你的手机号——无法像邮箱那样改个口令就盗走了)。你会说,手机还不是会丢失,但是你要明白,你丢失的手机,你是可以停机的,可以通过你的手机密码卡或是身份证恢复你的手机号的。另外,<strong>使用手机的好处还在于,我的系统不需要收信你的真实信息(如:姓名,身份证,住址等),这些真实信息的验证交给移动运营商验证就好了</strong>。<strong>在程序设计的里,我们把这种事叫“解耦”</strong>。Amazon 就一种通过电子邮件,然后通过你使用过的信用卡后四位,以及帐单的邮寄的邮政编码,如果你的邮箱变了,没问题,打电话给客服吧,客服会问你的钱行卡号和帐单地址,电子商务的好处就是可以有信用卡或银行卡来恢复号。,因为这<strong>——把用户的真实信息“解耦”到了银行,并“耦合”和银行方面的安全策略</strong>。很明显,银行和移动公司的安全级别更高,而且用户也更信任他们。最好不要自己收集用户的真实信息,要是丢失了,你就麻烦了(在国外你就要被起诉了)</p>    <p> 在这里,你可能会有疑问,如果我的帐号口令丢失了,那么盗取者会进入我的系统改我的邮箱,改我的手机,改我的信用卡等,那不也一样吗?我想说,对于邮箱和手机,其和密码的级别一样,你改密码的时候,你都要输入旧密码,所以,你改邮箱和手机的时候也要使用旧的邮箱和手机。关于你绑定的银行卡或信用卡号,就算是自己也看不见的(只能看见四个尾号),这就就可以防盗了。当然,盗电子商务帐号的人一般会用你一帐号买东西,但是其会遇到另一个麻烦,那就是要面对银行方面的审计工作——1)对于银行卡通过银行的网银,对于信用卡则要受到信用卡口令和签名的验证。</p>    <p> 一些人说,QQ 的帐号申诉过程的“美妙”在于其他尽可能多的收集你的信息,这样一来,反而是安全的,因为密码容易被盗,而你的那么多的信息则不容易被盗。这样认识只对了一半。<strong>真正的安全系统是协同整个社会的安全系统做出来的一道安全长城,而不是什么都要自己搞</strong>(当然,我们都知道腾讯的 DNA 就是什么都要自己搞,连 FBI 和 CIA 的事也已经在搞了),什么自己都搞反而不安全了。</p>    <p> <strong>其它讨论Q&A</strong></p>    <p> <strong>问题一:通过申诉帐号靠不靠谱?</strong></p>    <p> 明显不靠谱,而且还很愚蠢。这反而成了恶意者的温床。他人可以通过申诉让正常人的帐号失效,这是一件多么愚蠢的事啊!(我的 QQ 帐号前两天不就被这样攻击了吗?)</p>    <p> <strong>问题二:通过联系人恢复帐号靠不靠谱?</strong></p>    <p> 不全然靠谱,因为你的 QQ 总是会有陌生人加你,你的邮箱联系人也会有一些你不受信的人。那些人可能就是攻击者的小号。所以,如果你要通过联系人的话,就不要像 QQ 或 MSN 那样坑爹的做法,让用户自己来选。而是要像 非死book 那样的做法——系统随机挑些人来让你认。</p>    <p> <strong>问题三:在注册时设置受信的联系人靠不靠谱?</strong></p>    <p> 看似靠谱,但是个人觉得还是还一点问题。因为受信者通过电子信息无法分辨是本人还是盗号者,还要受信者实际联系一下对方。这就好像我们在手机号存电话号码的时候,写上了爸爸,妈妈这样的字眼,这样当恶意者拿了你的手机后,就可以向你的家人敲诈了,因为其直接就可以叫出对方那头的人和被攻击者的关系。</p>    <p> <strong>问题四:恢复帐号的时候收集用户的真实信息靠不靠谱?</strong></p>    <p> 这要看是什么情况了。如果用户在注册时提供了这些真实信息,就靠谱,如果没有就相当不靠谱。试想:你去银行开户存钱的时候,银行没有让你出示身份证,只让你设了个口令。然后我就可以用我的身份证去重置你的口令。你觉得这个事是不是相当的坑爹?!</p>    <p> (如果你还有什么样的问题,我可以在继续更新并回答你的问题)</p>    <p> ——————————</p>    <p> 希望你现在明白,关于腾讯的帐号申诉过程,看上去像那么回事,实际上漏洞百出。当然,我不能说腾讯是愚蠢的,因为人家搞得那么大的企业,我只能说人家是在下一盘很大的棋……<br /> <br /> 来自: <a id="link_source2" href="/misc/goto?guid=4958201527942377076" target="_blank">coolshell.cn</a></p>