扫码登录,背后是如何实现的?,终局之战

首先一个非常重要的原因,扫码登录还可以提高用户的使用体验。在过去,我们需要记住各种复杂的用户名和密码,然后花费很多时间输入这些信息才能完成登录。有了扫码登录以后,我们只需要用手机扫描二维码即可完成登录,非常方便快捷。这大大提高了用户的使用体验,并且可以帮助企业增加用户黏性。

其次,扫码登录的出现是可以提高用户安全性。相比于传统的用户名密码登录方式,扫码登录更加安全且不容易被黑客攻击。因为每个二维码都是独一无二的,只有在扫描正确的二维码之后才能完成登录,这使得扫码登录成为了一种优秀的身份验证方式,可以有效地降低账户被盗风险。

此外,扫码登录也有助于推进数字化时代的发展。在数字化时代,我们需要更快速、更高效、更安全的登录方式来保障我们的账户安全,扫码登录正是应对这个需求而出现的。

但是你知道扫码登录背后的原理么,本文参考了一些优秀的文章,带你一起来了解一下扫码登录是如何实现的。

二维码简介

二维码的生成

二维码是一种用于存储数据的二维图形码,由黑白色块组成,具有快速扫描和识别的特点。与传统的条形码相比,二维码可以存储更多的信息,并且可以容错,即在一定程度上损坏时仍能正确读取。

制作二维码可以使用二维码生成器软件或在线生成器网站,目前国内最常用的二维码生成网站为草料二维码。首先,在二维码生成器中输入要编码的内容,如网址、文本或联系方式等。随后,有的二维码生成器会让选择二维码的尺寸和纠错级别,通常越大的尺寸能够存储更多的信息,但也会增加扫描时间和空间消耗。纠错级别指的是二维码在损坏的情况下还能够被正确解码的能力,不同的纠错级别对应着不同的数据保护能力。最后,点击生成按钮即可得到一个彩色的二维码图像,可以保存到计算机或打印出来贴在物品上。

二维码的解析

二维码的解析过程包括图像处理和数据解码两个部分。 首先是图像处理。当我们用手机或扫码器扫描二维码时,设备使用相机捕获图像,并通过算法进行预处理。首先,对图像进行二值化处理,将彩色图像转换为黑白二值图像。接着,进行边缘检测,找到二维码中的定位点和编码区域。然后,进行透视变换,将二维码区域校正为一个矩形图像。最后,进行图像分割,将矩形图像分成若干小块,并提取出每个小块中的黑白格子信息。

接下来是数据解码。在图像处理完成后,就可以对二维码中的数据进行解码了。解码过程需要依据二维码的编码规则,对每个小块中的黑白格子进行解析。通常,二维码采用的编码方式是汉明码或 RS 码。这些编码方式可以实现数据的纠错和自动识别。在解码的过程中,还需要考虑二维码的版本、纠错等级、编码方式等因素,以保证解码的准确性和稳定性。当解码完成后,设备将得到一个包含原始数据的字符串。

系统认证的本质

用户无论是通过扫码的方式登录还是使用账号密码进行登录,都是为了做两件事:

  1. 告诉系统我是谁
  2. 向系统证明我就是我

比如账号密码登录,账号就是告诉系统我是谁, 密码就是向系统证明我是谁; 比如手机验证码登录,手机号就是告诉系统我是谁,验证码就是向系统证明我是谁。

我们在日常登录网站时,其实是不需要每次访问都输入账号密码的,大多数情况都是第一次在浏览器访问这个网站的时候需要登录,后面很长一段时间再使用这个设备以及这个浏览器进行这个网站访问的时候其实不需要进行扫码或者输入账号密码。难道是扫码过程中,或者第一次输入密码后,我们的手机或者电脑把密码缓存到本地,后续再进行访问的时候直接将本地的密码发送过去了么?其实仔细想想这样不太可能,因为这样太不安全的,黑客很容易窃取的你的设备本地缓存的各种密码。

其实目前大多数的系统登录认证是基于token认证进行实现的,它通过使用特定的算法将用户凭证转换为安全令牌,并将其传递给客户端应用程序。该令牌通常包含有关用户和会话状态的信息,以便在应用程序的后续请求中进行身份验证和授权。这种身份验证机制的本质是使用户能够在不直接向服务器发送凭证的情况下访问受保护的资源。相反,一旦用户被验证通过,该系统生成一个加密的Token,并将其返回给客户端应用程序。客户端应用程序随后将此Token附加到每个后续请求中,并在必要时将其提供给服务器进行验证。

看了上面的介绍,你是否还是对token是什么比较懵,下面我会再简单介绍一下。

Token是什么

Token,又被称为令牌,是一种在计算机系统中广泛使用的安全令牌,用于身份验证和授权。通常情况下,Token是由服务器生成的一个随机字符串,Token会和用户的账号信息以及设备信息进行关联。在进行认证服务时,Token通过客户端应用程序传递到服务器上,以表明其已被验证过且有权访问某些资源。Token通过解决身份验证和授权问题,为现代计算机系统提供了更强大的安全性和可靠性。

为什么需要Token呢?在过去,很多计算机系统采用基于Cookie或Session的身份验证机制进行用户认证和授权。然而,这种机制存在很多缺点,如Cookie可能被窃取或篡改,而Session则需要在服务器上维护一定的状态信息,从而导致负载增加和服务器性能下降等问题。与之相比,Token是一种更高效、更安全、更灵活的身份验证和授权机制,它不依赖于服务器上的状态信息,并且可以跨越多个域和应用程序使用。

基于 token 的认证机制流程步骤大致如下:

  1. 首次登录时,客户端应用程序向服务器发送用户名、密码、设备信息等凭证,以请求身份验证。
  2. 服务器验证用户凭证是否正确,并生成一个Token。此Token通常包含有关用户和会话状态的信息,例如用户ID、设备id等。这个token本质上其实就是一串有着特殊意义的字符串,它的意义就在于,通过它可以找到对应的账号与设备信息。
  3. 服务器将该Token进行加密,并将其返回给客户端应用程序作为响应。客户端应用程序随后将此Token存储在本地,以备后续请求使用。
  4. 在后续的每个请求中,客户端应用程序会将该Token附加到HTTP请求参数中,并将其发送到服务器。
  5. 服务器接收到请求后,解密并验证该Token的有效性。如果Token有效,则相应的操作被授权通过,并且服务器响应与请求相关的数据。
  6. 如果Token无效或已过期,则服务器将拒绝请求,并返回相关的错误信息。

从前面这个流程,我们可以看到,客户端不会也没必要保存你的密码,相反,它是保存了token。可能有些同学会想,这个token这么重要,万一被别人知道了怎么办。实际上,知道了也没有影响, 因为设备id是唯一的,只要你的设备信息别人不知道, 别人拿其他设备来访问,验证也是不通过的。可以说,客户端登录的目的,就是获得属于自己的token。 关于设备id的内容可以参考这篇文章:傻傻分不清楚?带你了解设备id

扫码登录原理

介绍完token我们前置的知识也就够了,接下来我们切回正题,继续来聊扫码登录。

回忆一下,我们在进行扫码登录过程中,一般二维码经历了三个状态:待扫描、已扫描待确认、已确认:

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数网络安全工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上网络安全知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加VX:vip204888 (备注网络安全获取)
img

如何自学黑客&网络安全

黑客零基础入门学习路线&规划

初级黑客
1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)

2、渗透测试基础(一周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等

3、操作系统基础(一周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)

4、计算机网络基础(一周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现

5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固

6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)
恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k

到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?

如果你想要入坑黑客&网络安全,笔者给大家准备了一份:282G全网最全的网络安全资料包评论区留言即可领取!

7、脚本编程(初级/中级/高级)
在网络安全领域。是否具备编程能力是“脚本小子”和真正黑客的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力.

如果你零基础入门,笔者建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习;搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP, IDE强烈推荐Sublime;·Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,不要看完;·用Python编写漏洞的exp,然后写一个简单的网络爬虫;·PHP基本语法学习并书写一个简单的博客系统;熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选);·了解Bootstrap的布局或者CSS。

8、超级黑客
这部分内容对零基础的同学来说还比较遥远,就不展开细说了,附上学习路线。
img

网络安全工程师企业级学习路线

img
如图片过大被平台压缩导致看不清的话,评论区点赞和评论区留言获取吧。我都会回复的

视频配套资料&国内外网安书籍、文档&工具

当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。

img
一些笔者自己买的、其他平台白嫖不到的视频教程。
img

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
img

2aa740233c5198d3c161b37e8.webp?x-oss-process=image/format,png)

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-Aqr9rJ9b-1712839524444)]

  • 19
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Spring Boot是一个非常强大的框架,其它框架可以在其基础之上进行扩展,开发高效方便。 扫码登录是指通过扫描某种二维码实现登录身份验证,其实现方式也比较简单。以微信扫码登录为例,其主要过程如下: 1. 用户在PC上打开登录网页,选择微信扫码登录选项,网页生成二维码; 2. 用户打开微信移动客户端,在“扫一扫”中扫描登录网页生成的二维码; 3. 微信客户端读取网页中的UUID(用于唯一标识每个扫码登录的操作),并将该UUID发送到微信服务器中; 4. 后台服务收到微信服务器发来的UUID,并根据UUID从一个Redis中获取登录信息,生成登录Token; 5. 后台服务将生成的Token返回给网页,网页中通过Cookie将Token存储在用户端; 6. 后续用户的操作中,网页和后台服务以Token进行身份验证。 在以上过程中,由于前、后端的分离操作,需要实现一个通过网页得到UUID的后端服务。这里可以用Spring Boot实现。具体步骤如下: 1. 创建Spring Boot工程,并在pom.xml中添加相关依赖; 2. 实现一个Controller接口,用于处理二维码请求,生成UUID存储在Redis中; 3. 实现一个AuthenticationProvider接口,用于验证生成的Token,并授权用户操作; 4. 将Controller接口映射到一个固定路径,并在网页中创建扫码登录界面; 5. 网页从Controller中获取UUID,并生成二维码(这个可以使用第三方二维码生成工具); 6. 网页通过轮询或WebSocket实现Token的获取和存储。 总的来说,Spring Boot实现扫码登录的过程较为简单,可以基于现有的技术栈进行扩展,极大地提高了开发效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值