`
gaojingsong
  • 浏览: 1182521 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

【二维码登录 解析】

阅读更多

1. 每打开一次页面的时候会随机生成一个含有唯一ID的二维码,当然后面带的那个参数是唯一的。XXXXXXXXx?_t=13869253897);

 

2.当用户使用登陆后的来往扫描该二维码的时候,客户端会解析出二维码中的这个唯一ID会将这个id和手机上的来往账号及密码绑定,并上传到服务器;

 

3.来往网页版页面每隔1秒或2秒会get请求该id对应的来往账号及密码,如果id绑定上了来往账号和密码,那么就可以请求到账号和密码,就可以自动登陆了。

 

4.这样实现的目的

1.安全,用户不需要再次输出用户名密码,

2.方便,用户不需要再次输出用户名密码.

3.比如QQ与手机图片互传也是这样一个原理.



 

 

这种登陆方式虽然炫酷,但是多少有些违背直觉:

网页端是怎么知道是哪个账号扫它的呢?

前后两个事件是如何联系起来的呢?

这种登陆方式安全么?

为什么选择这种验证方式呢?

这种登陆方式还可以延伸到其他应用场景么?

 

 



 

实现机制

今天隔壁老王在刚买的笔记本上体验了一把网页微信。他是这么做的:

  1. 在网页打开wx.qq.com/,这时网页显示的是一个二维码。
  2. 用手机打开微信,使用扫一扫功能扫描屏幕上的二维码。
  3. 扫描成功后,手机微信询问是否确认登陆网页版微信,点击确认后网页微信登陆成功。

让我们慢镜头重放这个过程:
当老王访问 wx.qq.com/,他在网页中得到一个二维码。

在这个过程中,老王的浏览器和微信服务器之间建立了一个阻塞的长链接,同时服务器还专门为老王新开了一个有独立UID为SWJNSjNJblBJQT09的Session,并把这个UID嵌入到二维码中返回。

注意,这个UID只是一个随机不重复数,并不是Session ID。

老王看到二维码后,使用手机微信中的扫一扫功能读取了二维码中的UID。手机微信把具有老王身份信息的token A和这个SWJNSjNJblBJQT09的UID打包并做一些特殊的处理后,发给微信服务器进行确认。

隔壁老王: 我们可以使用其他二维码扫描软件来登陆吗?
Cosmo: 二维码的转码规则是统一的。任何二维码扫描软件都可扫除里面包含的信息。比如上图扫出的结果是login.weixin.qq.com/l/I。但是只有微信app能够把包含用户身份信息的token和这个扫描结果做处理,然后与微信服务器通信,告知它是老王扫了这个二维码。所以,重要的不是扫描二维码中的信息,而是谁扫描了这个信息。

当微信服务器通过确认时,它已经同时获得了用户老王和UID为SWJNSjNJblBJQT09的网页端的信息,并知道老王将要通过UID为 SWJNSjNJblBJQT09的Session来访问微信服务。因为老王是一个真实的用户,所以微信服务器就给UID为SWJNSjNJblBJQT09的Session分配一个token B,让老王能够在一定限定条件下访问微信服务。由于网页在加载时候已经把大部分相关资源都预先加载进来了,这个长链接得到确认信息后,网页端只需要加载用户列表,所以响应速度很快,也不需要手动刷新。

隔壁老王: 限定条件是什么呢?
Cosmo: 具体条件要问腾讯才知道,但是这些限定不外乎限定访问时间、限定同时登陆设备数、电脑休眠后Toekn自动收回等等。

现在,老王理论上算是登陆成功了。但是为了不显得突兀,微信服务器贴心地给老王手机发个确认登陆网页版微信的信息,让老王做最后一个确认操作。

隔壁老王: 这种登陆方式安全嘛?
Cosmo: 由于整个验证过程在手机和服务器这个闭环中运行的,有效杜绝了电脑端泛滥的木马和病毒,并且二维码的生成和访问都通过SSL安全通道完成,这种登陆方式在现阶段来说应该是安全的。当然,要保管好手机。

至此为止,老王成功登陆了网页微信啦!

  • 大小: 33.8 KB
  • 大小: 90.3 KB
0
0
分享到:
评论

相关推荐

    从本地选择二维码图片解析的简单示例

    在IT行业中,二维码(Quick Response Code)是一种广泛应用于数据交换、信息传递的二维...开发者需要理解二维码的工作原理,熟悉相应的编程库,并掌握良好的用户交互设计,才能实现一个高效、稳定的二维码解析功能。

    QRcode.rar_c++ 二维码解析_site:www.pudn.com_二维码的解析_二维码解析_二维码解析 C++

    二维码生成与解析,有源代码。能根据输入的信息生成相应的二维码,还能把二维码解析为具体的信息

    Java实现的生成二维码和解析二维码URL操作示例

    Java 实现生成二维码和解析二维码 URL 操作示例 Java 是一种广泛使用的编程语言,具有强大的功能和灵活性。在实际应用中,生成二维码和解析二维码 URL 是非常常见的操作。本文将详细介绍 Java 实现生成二维码和解析...

    java自动识别图片中的二维码

    利用java自动识别图片中的二维码并解析二维码中的数据利用java自动识别图片中的二维码并解析二维码中的数据利用java自动识别图片中的二维码并解析二维码中的数据利用java自动识别图片中的二维码并解析二维码中的数据...

    二维码生成解析工具

    接下来是“二维码解析”功能。当用户导入包含二维码的图片时,工具会利用图像处理和解码算法,识别二维码中的模块并解码出原始信息。这一过程包括定位、解码和纠错三个步骤。定位是找到二维码的边界和定位图案;解码...

    微信小程序:二维码生成器,二维码解析.zip

    项目介绍 小程序项目 二维码生成器 《微信小程序》 软件架构 软件架构说明 原生微信小程序 基础功能 ...二维码反向解析器。 二维码反向解析出来字符串 微信名片,本地存储的一个微信名片,简单实现

    二维码创建解析代码

    代码中还定义了一个内部类`J2SEImage`,用于适配`QRCodeImage`接口,从而能够将Java的`BufferedImage`转换成二维码解析所需的格式。 通过以上分析可以看出,创建和解析二维码涉及到的关键技术点包括:编码模式设置...

    C++二维码解析,支持中文

    在"QRTest"项目中,你可能已经创建了一个简单的应用程序,其中包括一个按钮用于触发图像加载和二维码解析,一个文本框用于显示解码结果。你可以通过添加错误处理和用户反馈机制,进一步完善这个应用。 总的来说,...

    java写二维码和解析二维码要用的jar包

    以下是一个简单的二维码解析示例: ```java import com.google.zxing.*; import com.google.zxing.client.j2se.BufferedImageLuminanceSource; import com.google.zxing.client.j2se.MatrixToImageReader; import ...

    上传二维码图片解析二微码.zip

    在IT行业中,二维码作为一种高效的信息载体,被广泛应用于各种场景,如链接分享、产品防伪、支付...掌握这些技能,你就能构建一个功能完善的二维码上传与解析系统,有效地应用于产品防伪或其他需要快速信息传递的场景。

    基于Spring Boot的二维码生成与解析接口.zip

    本项目是关于"基于Spring Boot的二维码生成与解析接口",将重点探讨如何在Spring Boot环境中实现二维码的生成与解码功能。 首先,二维码(Quick Response Code)是一种二维条形码,能够存储更多的数据,包括URL、...

    二维码工具、可解析二维码

    二维码工具可解析、生成二维码,可以生成普通无图二维码,也可生成带图标的二维码;且支持二维码读取解析、名片二维码、电话二维码、WIFI热点二维码以及短信二维码等;功能简单实用 。

    Asp.net生成二维码和解析二维码源码20140422

    Asp.net生成二维码和解析二维码源码 源码描述: 这是一个比较实用的生成二维码和解析二维码小程序,首先通过一个一般处 理程序提供一个生成二维码的方法,在页面的ImageUrl调用生成二维码图像。 用户通过上传图像...

    二维码解析器源码

    二维码解析器源码是用于读取和解码二维码图像的软件开发工具,主要涉及C/C++编程语言。在本文中,我们将深入探讨二维码技术、C/C++编程基础、二维码解析原理以及如何在Visual Studio(VS2010、VS2013)环境下构建和...

    C#二维码生成解析器QRCode源码

    2. **二维码解析**:解析器部分的代码会读取二维码图像,然后解码矩阵中的信息。这可能涉及到图像处理技术,如灰度化、二值化和边缘检测,以及QRCode的解码算法。 3. **用户界面交互**:CSkin库的应用将体现在这里...

    android 二维码 扫描 解析 例子源码

    三、二维码解析 Zxing库提供了`DecodeHandler`类用于处理解码过程。开发者需要创建一个子类并重写`handleDecode`方法,将扫描到的二维码数据处理成所需格式,例如字符串、URL等。 四、扫描界面UI设计 为了提供良好...

    h5端使用jquery直接解析二维码

    总的来说,通过结合jQuery、qrcode.js等工具,H5端可以实现便捷的二维码解析功能,为用户提供快速的信息获取和交互体验。开发者可以根据具体需求,调整代码逻辑和界面设计,打造符合应用场景的二维码解码功能。

    java实现生成二维码和解析二维码

    对于二维码解析,ZXing同样提供了Decoder接口和Reader类。以下是如何解析二维码的步骤: 1. 创建解码器:实例化MultiFormatReader,它可以识别多种类型的条码和二维码。 2. 读取图像:加载要解析的二维码图像,可以...

    java qrcode产生二维码和解析二维码

    在Java编程环境中,生成和解析二维码(QR Code)是一项常见的任务,特别是在移动应用、网站链接分享、电子票务等领域有着广泛的应用。QR Code是一种二维条形码,可以存储大量信息,如文本、网址、联系人信息等。在这...

    QRCode生成二维码和解析二维码java

    在Java环境中,生成和解析二维码是通过特定的库或API实现的。本项目提供了一个完整的Eclipse项目,包含编码和解码过程的源代码,并封装在一个jar包中,方便开发者直接使用。 生成二维码主要涉及以下知识点: 1. **...

Global site tag (gtag.js) - Google Analytics