一个不用密码的用户系统
很多年前云风设想过这样一个用户系统《为什么一定要有密码?》,我是挺赞同的。对我来说,用户系统是一个责任重大的东西,可惜很多国内厂商都不把这当回事。
之前做过一些小东西,基本上都是采用第三方登录的方式,比如用google账号登录。这样就把用户管理的麻烦事交给第三方去处理了,相信google这样的大厂能做得更好。
然而总会有需要自己管理用户的时候,虽然可以采用各种安全的措施去保护这些用户数据,比如用更安全的密码散列算法什么的,但最好还是不要有密码,没有密码就无从泄露了。
之 所以有这种想法,是站在用户的角度:你可能觉得你的产品很重要,希望用户用更强的密码来保护他们在你产品中的数据,但从用户的角度上来说,他们的隐私比你 的破产品重要得多,根本不想把重要的密码用在你的产品上,谁知道你的产品会不会被脱库然后成为社工数据的一部分,用一个低安全性的通用密码跟没有密码的安 全性是一样的,甚至更差,那不如索性不要密码。
但是密码又必须是一个可选项,毕竟还是会有人觉得他们在你产品的数据也有点重要,但是又不想 用跟别的地方一样的密码——毕竟还是有很多人不会去用密码管理工具的。我想到的一个办法就是OTP(一次性密码),比如 Google Authenticator 这样的现成的TOTP工具。
基本流程是这样:
用户使用email登录,如果是新用户,就用这个email注册,用户注册完即可以使用。
那么想设置密码怎么办?注册时会有提示,如果要设置密码请查收邮件。
邮件的内容就是以下几个东西:
设置密码的链接,Google Authenticator二维码,Android/iOS版的Google Authenticator安装链接加上设置说明。
设置方法:
下载安装Google Authenticator,扫描二维码添加账号,在设置密码的页面里输入刚才扫出来的Google Authenticator账号的一次性密码即可完成密码设置。
设置好密码以后再次登录就需要在输入完email之后输入Google Authenticator产生的一次性密码。
丢失Google Authenticator以后重置密码也很简单,只要重新生成一个二维码并重发邮件即可。
至于用户如果用了网易之类不安全的邮箱那就没办法了。
已经写好一个DEMO,见 github 。
推送到[go4pro.org]