独立开发者系列(20)——扫码登录

news2024/11/18 20:36:42

(1)网页端的安全登录设计
很多大型网站都有登录限制。这里以一个案例作为例子完整解析。理解安全的登录设计方式,无论对于以后做自动化,自动登录网站,获取数据,还是自己开发月租类型的系统非常有用。当前一般无法避免的一个问题,比如你提供一个服务,典型的比如课程网,你已经把价格定义的很便宜了,比如25元/月,但是别人可能只需要你里面的一部分或者用一俩天,典型的比如网盘/下载/影视剧/听歌,总有人会将自己的账号出租出去获利,这是变相的损害了网站的权益。,

在系统早期没有用户的时候,无所谓用户怎么共用账号,但是到了后期实在是用户一直很多,但是收益不涨的情况下,就不得不开始一些设计的措施与反制措施。

 首先,用户进入页面的时候,随机生成一个唯一设备码,只要是随机就行 类似84ec5ad9282b49dc679071da39b95564 这种长串,这样每个浏览器登录的时候,检查是否生成了一个设备码,没有设备码,生成一个并写入到cookie或者storage里面。如果用户试图登录的时候,将手机号绑定该设备码。

将设备码关系和手机号关系上报到了服务器端,服务器记录了对应关系。需要注意的是,一定要加个token验证提交端的身份,否则任意交口上报的数据,都被采用,存在上报无法验证确定安全性。

然后用户在提交手机号+密码的时候,将上一步接口的token和deviceid 俩个参数放入header里面传递。拿到了数据之后校验身份,如果设备码和手机号还有token三者不统一,表示是从不同地方提交的,可以拒绝此次登录。因为可能存在其他端欺骗服务器情况。然后才开始验证手机号+密码或者验证码的关系。

身份验证通过,会返回一个登录的token.用登录的token和设备端deviceid,去注册当前的设备在线。这样就保证了用户不用一直验证账号密码相关。将token和device进行强绑定,

   (2)扫码登录的实现
如果我们测试WX的二维码,可以发现是

https://weixin.qq.com/x/aaaaaaz这种类似链接,生成这个链接的时候,已经上报到服务器中心,上报了一个自己的唯一设备号+该链接+对应token,其实是我们手机扫码的时候,访问到了远程这个资源,我们微信扫到这个链接的时候请求了远程,这样远程知道你是要在这个客户端id登录,就实现了扫码登录。

另外一个实现例子

https://xluser-ssl.xunlei.com/xluser.core.login/v3/qrlogin?redirect_uri=

Center Account Personal
客户端会提供client_id scope user_code三个参数被扫码的服务器端获取到。拿到这三个参数之后(也就是扫码客户端),再次向远程服务器发三个参数的请求,被摄像头拿到这三个参数之后,将本地软件上登录的token+设备信息+二维码的三个参数一起推送到另外一个决定扫码登录的链接。

先验证token和设备的权限是否通过检测,如果通过,可以根据客户的user_code 可以检查到客户端。如果是网页端的登录就是不断的发送当前的设备id,一获取到登录返回的接口信息就跳转进入页面里面,根据token获取登录客户的信息。这样就实现了扫码登录的逻辑功能。

所以如果是直接使用token登录,因为登录时候的设备id是绑定了这个token的,在完全无法获取设备id的时候,直接使用token必然会异常。

小结:扫码的本质是通过摄像头解二维码变成参数,然后将扫码得到的参数加上自己的授权token,向注册服务器注册,然后得到信息后登录。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1900146.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在AvaotaA1全志T527开发板上使用AvaotaOS 部署 Docker 服务

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。 准备…

高考选专业,兴趣与就业前景该如何平衡?

从高考结束的那一刻开始,有些家长和学生就已经变得焦虑了,因为他们不知道成绩出来的时候学生应该如何填报志愿,也不知道选择什么样的专业,毕竟大学里面的专业丰富多彩,如何选择确实是一门学问,而对于学生们…

8分钟带你快速了解Connector/Catalog API的核心设计

引言 在现代大数据应用中,数据集成和同步成为企业数据管理的关键环节。随着数据源和数据库的多样化,如何高效地进行数据集成成为企业面临的重要挑战。 Apache SeaTunnel 作为一款开源的数据集成工具,致力于解决这一问题。本文将详细介绍 Sea…

小酌消烦暑|人间正清欢

小暑是二十四节气之第十一个节气。暑,是炎热的意思,小暑为小热,还不十分热。小暑虽不是一年中最炎热的时节,但紧接着就是一年中最热的节气大暑,民间有"小暑大暑,上蒸下煮"之说。中国多地自小暑起…

w3wp.exe 中发生未处理的 Microsoft ,NETFramework 异常。

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

Net5.5G,全球运营商的AI之翼

2024年,什么是全球运营商最关注的机遇?人工智能应该是当之无愧的第一答案。 根据市场研究机构Omdia发布的数据报告显示,人工智能在电信运营商向科技公司转型的过程中发挥关键作用,多数领先电信运营商都在加强人工智能的能力建设&a…

STL vector 手写--迭代器设计思想、空间配置器思想!两个面试题

STL空间配置器 空间配置器的核心功能就是把对象的内存开辟和对象构造的过程分解开,对象析构和内存释放的过程分解开,因此空间配置器主要提供了以下四个函数: 空间配置器的函数功能allocate负责开辟内存deallocate负责释放内存construct负责…

软件运维服务方案(Word原件2024)

软件运维服务方案(Word原件) 1. 服务简述 我们提供全面的软件运维服务,确保软件系统的稳定运行。 1.1 服务内容 包括监控、维护、故障排查与优化。 1.2 服务方式 结合远程与现场服务,灵活响应客户需求。 1.3 服务要求 高效响应&am…

【Mac】adobe CameraRaw 16 for mac(ps插件RAW处理工具)软件介绍

软件介绍 Adobe Camera Raw是一款专为处理和编辑数字照片原始文件(RAW文件)而设计的插件,它提供了丰富的功能来调整和优化图像。以下是它的主要特点和功能: 支持广泛的RAW格式: Adobe Camera Raw 16 支持处理来自各…

设置单实例Apache HTTP服务器

配置仓库 [rootlocalhost ~]# cd /etc/yum.repos.d/ [rootlocalhost yum.repos.d]# vi rpm.repo仓库代码: [BaseOS] nameBaseOS baseurl/mnt/BaseOS enabled1 gpgcheck0[AppStream] nameAppStream baseurl/mnt/AppStream enabled1 gpgcheck0挂载 [rootlocalhost …

hdu物联网硬件实验1 小灯闪烁

物联网硬件基础实验报告 学院 班级 学号 姓名 日期 成绩 实验题目 配置环境小灯 实验目的 配置环境以及小灯闪烁 硬件原理 无 关键代码及注释 /* Blink The basic Energia example. Turns on an LED on for one second, then off for one sec…

一维前缀和的实现

这是C算法基础-基础算法专栏的第十一篇文章,专栏详情请见此处。 引入 我们用朴素做法求一维数组的区间和时,一般是从前向后循环累加,它的时间复杂度为,当求区间和的次数过多,则会有超时的可能,那有没有时间…

【吊打面试官系列-MyBatis面试题】MyBatis 实现一对一有几种方式?具体怎么操作的?

大家好,我是锋哥。今天分享关于 【MyBatis 实现一对一有几种方式?具体怎么操作的?】面试题,希望对大家有帮助; MyBatis 实现一对一有几种方式?具体怎么操作的? 有联合查询和嵌套查询,联合查询是几个表联合查询,只查询…

Java跳出循环的四种方式

1、continue,break,return continue:跳出当前层循环的当前语句,执行当前层循环的下一条语句。   continue标签 break:跳出当前层循环。 break标签:多层循环时,跳到具体某层循环。 return:结束所有循环…

烟草企业如何在数字化转型中实现从“传统”到“智能”的跨越?

在数字化浪潮的席卷下,各行各业都在经历着深刻的变革。作为国民经济的重要组成部分,烟草行业正处于高质量发展的重要阶段,加快信息系统国产化升级,对于提升行业竞争力、强化信息安全保障具有重要战略意义。 达梦数据积极助力烟草行…

AIGC | 在机器学习工作站安装NVIDIA cuDNN 深度学习库

[ 知识是人生的灯塔,只有不断学习,才能照亮前行的道路 ] 0x03.初识与安装 cuDNN 深度学习库 什么是cuDNN? cuDNN(CUDA Deep Neural Network library)是由英伟达(NVIDIA)开发的深度学习库,专门用…

怀念旧的Windows声音?以下是如何在Windows 11中恢复它们

如果你渴望旧的Windows声音,希望能在Windows 11上再次听到,那你就很幸运了。我们将向你展示如何下载必要的声音包并创建复古的声音方案。 如何获取旧Windows声音的声音包 你需要做的第一件事是下载一个包含旧Windows版本声音的声音包。此外,请确保它包含的每个声音都是WAV…

【学习笔记】爱立信SPO 1400 CRAFT软件基础知识6——配置的备份与恢复的详细方法

一、前期准备 提示:下面所有学习内容都是基于以下条件完成的 条件1.已经正确安装并正常运行SPO 1400 CRAFT软件(以下简称LCT) 条件2.确认已正确使用爱立信SPO 1400 CRAFT软件通过网络登录设备(以下简称NE) 具体登录…

Python制作动态颜色变换:颜色渐变动效

文章目录 引言准备工作前置条件 代码实现与解析导入必要的库初始化Pygame颜色变换函数主循环 完整代码 引言 颜色渐变动画是一种视觉上非常吸引人的效果,常用于网页设计和图形应用中。在这篇博客中,我们将使用Python创建一个动态颜色变换的动画效果。通…

记录discuz修改用户的主题出售价格

大家好,我是网创有方的站长,今天遇到了需要修改discuz的主题出售价格。特此记录下 方法很简单: 进入用于组-》选择论坛-》批量修改