扫码登录的安全性分析

时至今日,各大互联网公司都已提供并鼓励使用扫码登录功能。扫码登录通过二维码在设备之间传递信息,使得用户可以使用安全可信任的设备(比如自己的手机)来控制不可信任的设备上的登录行为。其省去了在不便手动输入的设备(比如电视)上输入的环节,所以更方便;避免了在安全等级低的设备和环境(比如公共电脑、Web页面)中输入密码,因此更安全。

本文分析二维码扫码登录功能通常的实现方式,并重点总结实现过程中需要注意的安全点。

扫码登录流程有以下几个步骤:

非授信设备访问服务端生成token,并将token通过二维码展示在界面上;

授信设备扫描展示在非授信设备上的二维码,获取到token;

授信设备使用token访问服务端获取非授信设备的设备信息,并将非授信设备的设备信息展示在界面上,请用户确认;

用户确认在授信设备上确认后,授信设备访问服务端,告知服务端该token已被用户确认可用来登录;

非授信设备使用token登录。非授信设备并不知道用户何时会确认,所以需要轮询服务端,一直使用token尝试登录,直到成功;

需要注意的安全点有:

所有接口访问,要使用https;

token要有一个较短的有效期比如5分钟,且一次有效,用过即失效;

流程中第4步:展示被扫码端设备信息并请用户确认,必须有,不能省略;

总结以上两点,token有四个状态:NEW(新生成)、SCANNED(已扫描待确认)、CONFIRMED(已确认)、USED(已使用);

相应的,流程中第5步,使用token尝试登录可能有5种返回:token不合法、待扫描、已扫描待确认、登录成功并返回用户登录凭证、token已被使用过,失败的情况可以展示相应的信息以提升用户体验;

token只允许在生成该token的设备上进行登录,这需要有支持防伪造的唯一标识设备的能力,比如设备指纹;

扫码端必须是授信设备;

Web端不能成为扫码端;

必要时,第3步和第4步,可以使用非HTTP协议;

本文不讨论服务端安全,比如token怎样存储等;

就想到这么多:)

本文来自企鹅号 - java吧媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏北京马哥教育

浅谈运维工具体系

运维行业正在变革,推荐阅读:30万年薪Linux运维工程师成长魔法 运维流程管理工具 发布变更流程管理工具:做为系统接口与其他角色的工作衔接。并提供审批环节控制...

5008
来自专栏SAP最佳业务实践

SAP最佳业务实践:FI–应收帐款(157)-2客户主数据

4 流程步骤 4.1 创建客户主记录 在此活动中,可以创建客户主记录。 要执行该活动,使用此凭证中的主数据,运行创建客户主数据 (155.18)业务情景中的...

2963
来自专栏木子昭的博客

Python游戏开发! Mac完美安装pygame

3183
来自专栏Youngxj

emlog评论排行榜插件

2593
来自专栏逸鹏说道

基于HTML的PDF展示 pdf.js

很不错的一个插件,推荐给大家 pdf.js 是一个技术原型主要用于在 HTML5 平台上展示 PDF 文档,无需任何本地技术支持。 ? 在线演示:http://...

4198
来自专栏Petrichor的专栏

利用 visitor map (访客地图) 统计网站访客

通过向网页中 添加 插件代码,可以实现 利用 visitor map (访客地图) 统计网站访客 。

1272
来自专栏云原生架构实践

微服务架构风格

通过将一个应用程序设计构建为一组松散耦合的协作服务。每个服务都实现了一部分的相关功能。对应于Scale Cube(参考分布式系统三维可缩放模型)的Y轴。

3538
来自专栏王金龙的专栏

大型网站架构技术一览

前端指用户请求到达网站应用服务器之前经历的环节,通常不包含网站业务逻辑,不处理动态内容。

2321
来自专栏知晓程序

用手机也能看小程序后台数据了!微信你很棒棒哦

这个小程序,能让开发者、运营者在手机上就能查看小程序的运营数据,随时随地掌握小程序的市场反应。

1061
来自专栏何俊林

微信小程序,对个人开发者开放之亲体验

3.27晚,微信发出通告,微信小程序,对个人开发者开放,小编第一时间来体验,下面微信官方说明的几点: 为增强小程序能力,扩大小程序使用场景,现小程序新增以下能...

2555

扫码关注云+社区

领取腾讯云代金券