一个不用密码的用户系统

很多年前云风设想过这样一个用户系统《为什么一定要有密码?》,我是挺赞同的。对我来说,用户系统是一个责任重大的东西,可惜很多国内厂商都不把这当回事。

之前做过一些小东西,基本上都是采用第三方登录的方式,比如用google账号登录。这样就把用户管理的麻烦事交给第三方去处理了,相信google这样的大厂能做得更好。

然而总会有需要自己管理用户的时候,虽然可以采用各种安全的措施去保护这些用户数据,比如用更安全的密码散列算法什么的,但最好还是不要有密码,没有密码就无从泄露了。

之所以有这种想法,是站在用户的角度:你可能觉得你的产品很重要,希望用户用更强的密码来保护他们在你产品中的数据,但从用户的角度上来说,他们的隐私比你的破产品重要得多,根本不想把重要的密码用在你的产品上,谁知道你的产品会不会被脱库然后成为社工数据的一部分,用一个低安全性的通用密码跟没有密码的安全性是一样的,甚至更差,那不如索性不要密码。

但是密码又必须是一个可选项,毕竟还是会有人觉得他们在你产品的数据也有点重要,但是又不想用跟别的地方一样的密码——毕竟还是有很多人不会去用密码管理工具的。我想到的一个办法就是OTP(一次性密码),比如 Google Authenticator 这样的现成的TOTP工具。

基本流程是这样:

用户使用email登录,如果是新用户,就用这个email注册,用户注册完即可以使用。

那么想设置密码怎么办?注册时会有提示,如果要设置密码请查收邮件。

邮件的内容就是以下几个东西:

设置密码的链接,Google Authenticator二维码,Android/iOS版的Google Authenticator安装链接加上设置说明。

设置方法:

下载安装Google Authenticator,扫描二维码添加账号,在设置密码的页面里输入刚才扫出来的Google Authenticator账号的一次性密码即可完成密码设置。

设置好密码以后再次登录就需要在输入完email之后输入Google Authenticator产生的一次性密码。

丢失Google Authenticator以后重置密码也很简单,只要重新生成一个二维码并重发邮件即可。

至于用户如果用了网易之类不安全的邮箱那就没办法了。

当然目前只是一个设想,抽空写个DEMO试试。

时间: 2024-08-08 11:48:45

一个不用密码的用户系统的相关文章

不用密码的用户系统实现

已发在github [https://github.com/raptorz/userga] 以下直接取自README.md 一个可以不用密码的用户系统.默认只需要输入email即可注册或登录,如果需要密码,可以使用Google Authenticator扫描邮件中的二维码,使用GA生成的一次性密码登录. 基本功能 注册:输入email即完成注册或登录.提示:本网站可以不用设置密码,直接使用email登录,如果需要设置密码,请收取邮件,并按邮件中的指示操作. 登录:未设置密码:输入email直接登

设计一个可扩展的用户登录系统

在Web系统中,用户登录是最基本的功能.如何设计一个可扩展的用户登录系统呢?本文结合实际案例对用户登录系统设计进行多维度的讲解,帮助各设计者在应用中将复杂变得简单. 来源:廖雪峰的官方网站,作者:廖雪峰. [一] 在Web系统中,用户登录是最基本的功能.要实现用户名+密码登录,很多同学的第一想法就是直接创建一个Users表,包含username和password两列,这样,就可以实现登录了: id | username | password | name等其他字段 ----+----------

Linux基本安全措施、加强系统账号密码安全、系统引导和登录安全、用户切换、su、sudo、grub菜单

1. 基本安全措施 1.1系统账号清理 在Linux系统中,除了用户手动创建的以外,还包括随系统或程序安装过程中生成的其他大量用户,除了超级用户root外,其他大量账号只是用来维护系统运作.启动或保持服务进程,一般是不允许登录的,因此也成为非登录用户. 常见的非登录用户有:bin.adm.lp.mail.nobody.mysql.dbus.ftp.gdm.haldaemon等.为了确保系统安全,这些用户的登录Shell通常是/sbin/nologin,表示禁止终端登录,应确保不被人改动. 各种非

一个简单的多用户交互系统的实现

需求如下:创建管理员.教师.学员这三个视图,实现一个简单的课程操作交互 具体实现如下: Homework:│ ├─bin│──────start.py #程序的入口│├─conf│──────config.py #程序用到的文件的路径以及其他关系映射信息│├─core #│──────logger.py#记录日志的逻辑│──────main.py#实现三类用户的登陆逻辑,并利用反射调用不同类的具体方法│──────manager.py#实现了管理员类的各个功能│──────my_pickle.p

服务器间访问不用密码的设置

经常在服务器程序(脚本)里面,或在命令行中,执行ssh,scp命令,会碰到要求密码的情况,很不方便! 如果在两台相互信任,其实步骤挺简单,假设要从主机1上执行,ssh,scp操作. 主机1:host1    用户1:user1 主机2:host2    用户2:user2 一:在主机1上执行下列操作: 1./home/user1/.ssh/ 目录下,执行:ssh-keygen –t id_rsa $ ssh-keygen -t rsa Generating public/private rsa

如何恢复已删除账号及无账号密码进入win7系统?

电脑几乎成了家庭.公司必备的工具,处处都可见到它的身影.当我们不小心删除win7账户显示没有可用账户可登陆系统时,接下来应该怎么呢? 一,如何解决在系统装有杀毒软件的情况下恢复已删除账号? 由于只是删除原有账号并没有删除账户文件,猜测账户是可以恢复.果然,开始-附件-系统工具-系统还原,发现有一个早上的还原点,这个还原点有我需要的一切数据.于是选择该还原点进行还原. 但是,当系统自动重启之后出现提醒窗口"开启了杀毒软件,系统还原失败".关闭杀毒软件重试,还是同样结果. 检查后发现,杀毒

linux用户系统的详细说明

在etc目录下面有四个文件来描述用户和用户群组:passwd.group.shadow.gshadow 逐一解释这个四个文件: 描述用户的文件(/etc/passwd): Eg:moon:x:500:500:CentOS 6.5:home/moon:bin/bash [ 1 ]  [2][3] [ 4]    [5]        [6]     [7] 1).用户名称 2).加密口令(对应的是shadow文件) 3).UID 0表示系统管理员 1-499表示系统账号 500-2~32-1表示可

烂泥:puppet添加带密码的用户

本文由秀依林枫提供友情赞助,首发于烂泥行天下. 前一篇文章,我们介绍了有关puppet3.7的安装与配置,这篇文章我们再来介绍下如何利用puppet添加带密码的用户. 要通过puppet添加带密码的用户,我们需要分以下几个步骤: 1.查看user资源帮助 2.user选项说明 3.添加系统用户 4.生成用户密码 5.添加带密码的用户 一.查看user资源帮助 要通过puppet为系统添加用户,我们需要首先查看puppet如何添加用户,这个我们可以查看puppet的user资源帮助信息.如下: p

在不同域中各个系统拥有自已独立的用户系统时的单点登录问题

我们在实现业务中经常会碰到多个系统各自有各自的用户登录系统,而且这些系统是各自运行在各自的域下,所以要实现这些系统用户的单点登录就是个问题了,所以自己想了一个方案希望看看是否可行. 1.sso站点必须是单独一个站点. 我把sso单独设立一下站点,这个站点可以单独一个域名,主要存放各个系统的用户信息及登录的cookie信息. 2.保证各个系统的用户数据一致性和独立性. 各个系统拥有自己的用户数据表相互独立.每一个系统的CUD(创建,更新,删除)时都会触发其它系统的CUD.那么这里有个问题也会出现: