欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

为什么现代登录系统需要使用邮箱登录?——关于登录系统设计架构

最编程 2024-08-13 15:21:42
...

记得当年刚学会上网的时候,去逛了一些论坛,发现好多都需要邮箱登录,很烦,我连个邮箱都还没有呢那个时候,注册邮箱嫌麻烦,于是就直接跳过继续使用guest模式了。

可如今遍地社区的账号系统都要有个邮箱,自己呢也不能老是在互联网上匿名做一个旁观者,要发声就得有个邮箱。于是乎我的邮箱被垃圾邮件塞满了。

当我开始开发web得时候,我才开始思考为什么这邮箱如此受待见,想着想着就发现好多社区论坛的账号系统都有毛病,设计一个完善的账号登录系统也不是简单的事。

先从邮箱的好处说起

1.全球唯一
全球唯一的标识有很多,比如UUID,比如mac地址,但是都不及邮箱那样方便记忆。
当然你还可以自己起一个用户名,一般是英文数字下划线搞在一起的,只要你不是随便起的名字,也都不难记住,但是它存在一个冲突的问题,做到唯一要付出代价。

2.可方便通知
这个很好理解,就是社区上有消息来了,就给你邮件通知。论坛上有什么精华的东西,也需要定期来打扰你一样,好让你作个回头客。当然前提是用户使用了常用的邮箱来登录。

3.重置密码
这个密码要是忘记了怎么办,如果只有一个用户名,那重置密码就要靠手动联系客服了。论坛用户多起来了,不免是要把客服给累坏的。有了邮箱,系统就可以把重置密码的链接发到你的邮箱里,只有邮箱的所有者才能看到这个链接,才能重置密码。这样也就防止了别人冒充你来欺骗客服以达到盗取账号的目的。

再说说邮箱账户的问题

1.要避免他人使用你的邮箱账号来登录
有很多网站在注册的时候让你填写一个邮箱,但是还没有等你验证这个邮箱就可以使用它来登录了,甚至系统还会给这样没有验证的邮箱发送通知啊邮件啊什么的。方便是方便,简单是简单,不用验证就可以收到通知让用户感觉很easy。

但是如果我用他人的邮箱来注册,那这个社区网站就成了邮箱的垃圾邮件制造者了。
邮箱所有者接受到一堆跟自己无关的消息通知。

如果有一天,这个邮箱的主人也要来注册这个社区,注册的时候老是提示:该邮箱已被占用!不知道他会有怎样的想法。他也许会想:哇,原来我以前注册过这个网站啊。好吧如果这个时候这个网站还提供了使用邮箱来重置密码的功能,完蛋了,等到用户重置了这个密码重新登录进入这个网站时,惊讶地从相册里发现了一堆私密床照。

话说你可千万别在互联网上传这个东西啊,固然网站不会让其它用户看见你的隐私,但是网站的管理员却是有后台权限可以看到的。

2.邮箱账户的服务是有可能停止的。
比如去年yahoo就关闭了中国区的邮箱服务。要想让用户继续可以使用网站的通知功能和修改密码功能,就必须考虑到这个问题。如何解决,整一个更换邮箱账户的功能就行了。

3.千万不要暴露用户的邮箱信息。
邮箱是用户的隐私,随比不上床照这番敏感,它同手机号码的隐私程度差不多。如果不小心露出了邮箱的信息,就会导致网站失去用户的信任。想想如果大号如姬十三的邮箱不小心给公开了,那各种广告啊打听啊邮件就会塞满邮件,最终导致这个邮箱沦为垃圾邮箱。
为了自己邮箱的安全,用户们也千万不要随意使用自己的重要邮箱来注册不靠谱的小站。待观察后觉得这网站的服务商是可靠的,可考虑再更改邮箱,先用马甲邮箱顶着。

下面来讨论一下现代网站的登录系统的大致结构

登录系统结构

这个图是用chrome应用processon画的,感觉很方便,这里向大家推荐一下。

1.第三方登录账号。
随着OAuth的兴起,使用第三方账号的登录系统越来越普及,因为方便。就好比你有了一把万能钥匙可以打开自己的保险柜、房间、车等私人财产,等以后物联网兴起了,这个就不再是比喻了。

2.登录方式的多样化。
如果你的房间只配了一把钥匙,钥匙丢了,就需要花钱找锁匠来解决了。网站也是一样,重置密码的流程可能是比较繁琐的,如果你有多个钥匙多种登录方式也就不用担心这一点。比如你忘记了自己的微博,你可以使用人人账号登录,登录后再使用第三方账号的解绑和绑定功能更换一个微博,这个比喻成钥匙就是重新配一把。

3.支持手机号登录。
前面提到邮箱类似于手机账号。那它们有哪些共同点呢?
全球唯一、记忆方便、还可以用做通知,当然通知功能你要谨慎使用,太频繁了就会被拉黑,用户对短信信息可比邮箱信息敏感多了。
手机号和邮箱确实非常相近,但是它们也有不一样的地方。
手机号在停机一段时间后会被重复利用,这个时候属主就换人了。所以使用手机号时必须注意时效问题,如果上次手机登录时间已经很久远,这个时候就不可以再使用手机号直接登录。任何网站都不宜只提供手机登录这一种登录方式。
手机号非常适合移动应用,通知方便性(验证)比过邮箱,输入时是纯数字方便性也比过邮箱。而且很多应用还具备捕获手机短信内容的功能,验证码通过手机短信过来了,可以直接被填充到输入框,非常方便。

4.手机/用户名/邮箱公用一个密码登录。
用户名不可以时纯数字的,否则会跟手机号产生冲突。用户名也不可以含有@字符,否则会和邮箱冲突。

5.用户的URL很重要。
weibo.com/jishisan可要比weibo.com/u/164644616…方便记忆很多。很多用户访问他人主页的方式并不是要在自己的好友里边找,或者通过搜索功能,他们直接在浏览器里键入URL。
这个URL短名称一般是通过用户的名称信息的拼音来生成的,会有冲突处理,加后缀。
也可以提供用户自定义的功能,但是要避免一些关键的短名称被用户抢走,还要避免用户频繁修改短名称,这会干扰搜索引擎。

最后说说设计登录系统时的注意事项

1.密码不可明文存储,也不可明文传输。明文存储的问题在于如果数据泄露了,密码就泄露了,而明文传输的问题就在于信道时不安全的,网线上传输的内容是可以被窃取的。至于如果加密传输,那是另外一个话题,一般可以使用https协议或者是签名。

2.验证邮箱时要注意钓鱼问题。
这什么意思呢,如果某个屌丝使用我的邮箱注册,待验证邮件发送到邮箱后,我可能没有安全意识,随手就点击了验证链接。这个时候系统就必须考虑到邮箱被验证的前提是我处于登录状态,如果不处于登录状态就引导我去登录,登录完成后再跳回验证地址进行验证。而不是一旦链接被点击验证就通过了,这是非常不安全的。
换个数学的方式来表达,就是此刻验证的是关系-账户和邮箱的关系,点击链接验证的是邮箱是我的,登录验证的是账户是我的,两个都验证成功了才可以建立关系。

3.邮箱被验证之前不可以使用邮箱登录。
一般网站都会提供使用邮箱来重置密码的功能。如果某个屌丝使用我的邮箱来登录,然后在账户里面传了自己的一张床照,待我使用重置密码功能后就可以得到屌丝的账户,拿到这张床照了。

4.必须保证账户有至少一种可靠的登录方式。
比如某个网站只提供第三方账号登录微博和人人,如果两个第三方账号都解绑了,那这个账号就成了一个黑洞,谁也无法登录。网站也不可以只提供手机登录这一种方式,因为前面提到了手机登录的时效性。

5.不要以任何方式泄露用户的邮箱和手机号。

6.提醒用户不要使用天涯****等密码注册。

暂时想不到其它需要注意的地方了,如果有读者可以想到,可以用评注的方式告知我。

最后祝愿你们都可以实现自己的一套强健的账号登录系统。