跨平台跨端的登录流程及其安全设计

news2024/11/11 4:48:21

跨平台跨端的登录流程及其安全设计

目录

跨平台跨端的登录流程及其安全设计

一、登录流程

1.1、登录流程时序图

1.2、三方App 登录

1.3、请求的路由守卫 

二、注册流程

2.1、注册流程时序图

2.2、多因素认证

2.3、自动跳转登录页面

三、涉及的技术与安全

3.1、用户许可授权

3.2、原生App权限

3.3、私域权限

3.4、加密与解密

3.5、前端相关的主要部分

3.6、后端相关的主要部分

3.7、安全相关的主要部分


一、登录流程

        为统一多端的路由守卫的模式(App客户端、浏览器web客户端(含移动端)、webview客户端等),保证系统及应用的安全,本文旨在寻求一种通用的、标准化的方法,可参考大厂的做法,比如微信小程序-登录流程时序:

https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/login.html

1.1、登录流程时序图

说明:

         ⓪、可扩展为PaaS的后端服务:你的应用服务,可“剥离”为“业务API服务”和“平台API服务”,即上述“开发者服务”和“可扩展为PaaS的后端服务”。“平台API服务”,可以为第三方的“独立软件开发商ISV”提供接入服务,由它们代为“最终用户开发”,或扩展你的“业务API服务”的功能;同时,“平台API服务”,还可以作为“企业客户”的管理后端,统一管理为企业客制化的appid和appkey,每个企业都有一个唯一的“appid”标识。而且,“业务API服务”和“平台API服务”可以是“分布式架构”,它们之间,可以是1对1的关系、也可以是多对一的关系、还可以是”支持负载均衡“的多对多的关系。

         ①、“通用签名”和“一次性登录凭证code”:“通用签名”,可以被客制化为一个“可扩展为PaaS的后端服务”所提供的签名校验服务,它可以是一个同时具备“PreventDoubleSubmission防止双重提交功能”的时间戳的差值,这个差值极短比如0.03毫秒,即我们通常所说的“雪花算法ID”,可以有效防止一开始就被”ddos“攻击。“一次性登录凭证code”,相当于一个“一次性访问令牌”,下次再请求,该令牌就会失效。

         ②、AK换取SK:几乎是,所有大厂的平台服务,所采用的方式,即:拿“用户注册平台服务”时,所产生的AppID对象,“appid”及其键值"appkey",携带临时令牌code,生成用户当前“会话”所使用的session_ID对象,“session_id”及其键值"session_key"。其中,session_key,会话密钥,是对用户数据进行 加密签名 的密钥。为了应用自身的数据安全,开发者服务器不应该把会话密钥下发到“多端应用”,也不应该对外提供这个密钥。

         ③、自定义登录态loginStatus:将session_key和openid按照客制化的特定算法进行关联,并存取到“开发服务器”持久化,可以存取到后端服务的数据库中,也可以持久化到开发服务器的redis键值对中,便于后期查询“签名密钥”进行“签名的验证”。

         ④、缓存自定义登录态loginStatus——Storage:将loginStatus缓存到“本地”,“本地”,对移动端App而言,即使其应用的“沙盒”路径下的loginStatus文件;对PC端的App而言,可以是操作系统的用户数据目录(比如MSWindows下的C:\Users\Administrator\AppData\Roaming\yourApp),也可以是该应用根下的某个专门存取的路径下的“加密”的loginStatus文件,读取时需要“解密”。对基于“浏览器或webview”的应用(比如html5网站、微信/支付宝/百度等的小程序),直接将其缓存到“Storage”下:

1.2、三方App 登录

        若你的服务,是PaaS的扩展平台服务,在你的App的基础之上,为第三方开发者提供API接入服务,可在上述流程开始,增设1个OAuth2.0的流程;首先征得”用户的同意“,三方服务,才可生效。

1.3、请求的路由守卫 

        对基于浏览器(含嵌入式浏览器)的客户端应用而言,一切,皆请求和响应,无论多页应用还是单页应用,均需要守卫上述1.1中的”自定义登录态“,任何对目标服务的请求,没有自定义登录态或自定义登录态失效,均需”重新进行登录“。

        对原生App(含多端)而言,也同样遵循“路由守卫”法则。

二、注册流程

2.1、注册流程时序图

        如上,关键是要对标1.1、登录流程中的②、AK换取SK”。

2.2、多因素认证

        OAuth2.0第三方认证,可以是权威大厂的手机验证码、可以是公众广泛认同的第三方“互联登录”(比如“微信登录”、“QQ登录”、“支付宝登录”、“百度登录”等),也可以是它们之间的组合。

        对于“企业级”应用及“平台级”的应用,可能还会涉及“用户工商信息”的提交流程与审核流程(本案,略)。

        认证的目的:验证,请求者,是人,而非“机器”代码。

2.3、自动跳转登录页面

        进入“登录流程”。

三、涉及的技术与安全

3.1、用户许可授权

        本案,整个生命周期,都应严格按照中国“公安三所等保认证”的要求进行设计、架构和实施,以免后续不停返工。

        应当按照工信部要求, 凡是涉及用户隐私的环节,都主动出示“用户隐私保护协议”,并拉起“用户授权”的平台界面,供用户阅读与授权同意,无论html前端涉及的Cookies,还是移动App涉及的用户设备能力及其三方sdk引用,抑或是微信等私域应用所涉及的用户隐私,均需征得用户授权。

3.2、原生App权限

        ▪ Android客户端平台:AndroidManifest.xml及其相关权限代码

        ▪ Ios及MacOS客户端平台:info.plist.xml及其相关权限代码

        ▪ MSWindows客户端平台:UAC及ACL相关的权限代码

3.3、私域权限

        ▪ 涉及微信小程序等应用内的权限请求

        ▪ 涉及支付包小程序等应用内的权限请求

        ▪ 涉及百度小程序等应用内的权限请求 

3.4、加密与解密

        ▪ 对称加密AES

        ▪ 非对称加密RSA

        ▪ 国密:OpenSSL与SM2、SM4

3.5、前端相关的主要部分

        ▪ 网络三剑客:Html5 + Css3 + ES5/ES6(及其TypeScript)

        ▪ Web APIs、

        ▪ HTTP协议

        ▪ 其它主要的web开发技术

        ▪ 工程化与模块化:webpack(3/5后)、vite、Node.js相关部分

        ▪ 主要的三方框架:Vue(2/3)、React(新React)、Node.js相关部分

3.6、后端相关的主要部分

        ▪ Node.js(express)和Egg

        ▪ 编译型开发工具及其语言:C和C++、 Delphi;Java等

        ▪ 数据库:MySql、MS Sql Server、Oracle等;IndexedDB、Redis

3.7、安全相关的主要部分

        ▪ 网络协议和操作系统的安全

               ▪ ddos分布式拒绝服务攻击-Distributed Denial of Service

               ▪ 其它(太多太细,略)

        ▪ web安全-最常涉及的内容

               ▪ 同源策略与cors跨域资源共享

               ▪ CSP跨域安全策略

               ▪ 缓存相关的安全:强制缓存与协商缓存;Cache Storage、Session Storage、Cookies、Loacal Storage

               ▪ Worker专用线程、Service Worker服务线程,及其安全

               ▪ SSL、TLS及Https

               ▪ JWT(Json Web Token)

               ▪ OAuth2.0标准

               ▪ CSRF跨站请求伪造攻击与反攻击-Cross-site request forgery

                              利用站点对用户的信任骗取user info

               ▪ XSS跨站脚本攻击与反攻击-Cross Site Scripting

                              利用用户对站点的信任骗取user info

               ▪ 登录和认证-服务端(以上的技术融合,做好它是一切的前提

               ▪ 登录和认证-客户端(以上的技术融合,做好它是一切的前提

               ▪ 整理与归纳-涉及浏览器相关的安全领域

               ▪ 整理与归纳-涉及原生App相关的安全领域

               ▪ 整理与归纳-涉及私域应用相关的安全领域

喜欢的,就收藏并点个赞,鼓励我继续技术的原创写作及经验分享:

《大厂后台管理passportal鉴权登录的通行做法-之腾讯云研究》

需要改进的过往组件:《App账号注册登录设计》

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

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

相关文章

基于深度学习的图片上色(Opencv,Pytorch,CNN)

文章目录 1. 前言2.图像格式(RGB,HSV,Lab)2.1 RGB2.2 hsv2.3 Lab 3. 生成对抗网络(GAN)3.1 生成网络(Unet)3.2 判别网络(resnet18) 4. 数据集5. 模型训练与预…

OSCP-Medjed(重置用户密码、mysql写webshell、可写文件替换提权)

目录 扫描 FTP WEB 提权 扫描 FTP 尝试登录到FTP服务器,该服务器位于端口30021 使用Filezilla,并能够浏览文件。那里有一些配置文件,但找不到任何值得注意的东西,不能写入目录。

成长之路---C语言笔记(构造类型之字符数组及字符串函数)

决不要停止自学,也不要忘记,不管你已经学到了多少东西,已经知道了多少东西,知识和学问是没有止境的一鲁巴金 字符数组 字符数组就是用于存放字符型数据的数组。在C语言中,字符串是作为字符数组来处理的,没有…

redis设计与实现读书笔记(2)

今天看的是关于单机数据库,RDB持久化以及AOF持久化的内容。 关于单机数据库 1.默认数据库数量 redis的服务器默认是会创建16个数据库,每个客户端访问的时候都要指定自己的目标数据库。 select可以切换目标数据库。 注意事项 到目前为止&#xff0c…

部署YUM仓库

文章目录 1. YUM仓库服务1.1 YUM概述1.1 准备安装源 2.制作YUM源2.1制作ftp源2.2 国内在线yum源2.3 本地源与在线源同时使用 3.yum软件包的下载方式4.yum的常用操作命令 1. YUM仓库服务 1.1 YUM概述 yum是一个基于RPM包(是Red-Hat Package Manager红帽软件包管理器…

【Android入门到项目实战-- 6.1】—— 如何申请用户权限

目录 一、申请权限 1、布局文件 2、MainActivity类 3、AndroidManifest文件 你在使用安卓APP时可能经历过以下场景:使用APP的拍照功能时需要你授权使用相机。那么APP是如何完成申请权限功能的? 访问:https://developer.android.google.cn/…

ERTEC200P-2 PROFINET设备完全开发手册(9-2)

9.2 运行AC1/AC4参考代码 修改源代码usrapp_cfg.h的宏为 #define EXAMPL_DEV_CONFIG_VERSION 44 编译后下载到评估板运行AC4示例程序 在TIA中导入GSDML-V2.35-Siemens-ERTEC200pApp44-20210623.xml。新建项目,添加PLC和Devkit设备。 按照如下图所示配置模块&am…

2023零基础学软考网络工程师能过吗?

网络工程师是在计算机及其相关领域中拥有一定专业技能和知识的人员,可以为企业或个人设计、建设和维护计算机网络系统。网络工程师的职业前景非常广阔,尤其是随着信息化和互联网的迅速发展,网络工程师的需求也越来越大。软考是国家计算机技术…

Java多线程- synchronized关键字总结

目录 多线程锁的概要 Synchronized关键字 synchronized加锁过程 synchronized锁优化 锁消除 锁粗化 多线程锁的概要 首先对于锁的条件和要点进行一个总结: 锁使用来保护代码片段的, 以保证多线程的安全性, 一次只允许一个线程执行被保护的代码.锁可以管理视图进入被保护代…

malloc的一些知识

这是一个叫malloc的家伙,一直勤勤恳恳帮你为所欲为的玩转系统内存。可是长路漫漫,唯malloc作伴,我却不懂它。走近malloc,多了解一下总没错。 可能对我们来讲,malloc就是void* malloc (size_t len),调用就是…

AcWing算法提高课-2.1.2城堡问题

宣传一下算法提高课整理 <— CSDN个人主页&#xff1a;更好的阅读体验 <— 题目传送门点这里 题目描述 1 2 3 4 5 6 7 #############################1 # | # | # | | ######---#####---#---#####---#2 # # | # # # # ##---#…

微信小程序的【运行机制】解读

文章目录 导语1.微信小程序的运行流程1.1 微信小程序的启动模式1.2 前台与后台的概念1.3 挂起1.4 微信小程序的销毁 微信小程序冷启动的页面从新启动策略 3.微信小程序热启动页面4. 退出状态注意点补充总结 导语 前面我们有章节给大家讲到了&#xff0c;微信小程序的生命周期钩…

Socket网络编程练习(C#)

Socket编程&#xff1a;两个窗口通信 本文章代码来自b站视频&#xff1a;【.Net零基础入门 (老赵主讲)-哔哩哔哩】 https://b23.tv/YI5VWaj 原视频发布者为传智播客&#xff0c;本人根据自己的学习进度对代码做了少许优化 一、网络编程前置知识 1.1 什么是网络编程 网络编程…

【Leetcode每日一刷】动态规划:509. 斐波那契数、322. 零钱兑换、300. 最长递增子序列

博主简介&#xff1a;努力学习的22级计科生博主主页&#xff1a; 是瑶瑶子啦所属专栏: LeetCode每日一题–进击大厂 前言&#xff1a;动规五部曲 以下是《代码随想录》作者总结的动规五部曲 确定dp数组&#xff08;dp table&#xff09;以及下标的含义确定递推公式&#xff0…

什么是异步,同步,并行,串行,单工,半双工,全双工通信

目录 1 如何理解“BUS总线” 2 通信方式的分类 2.1 串行通信Serial communication 2.1.1 异步传输Asynchronous serial communication 2.1.2 同步传输Synchronous serial communication 2.1.3 单工通信Simplex communication 2.1.4 半双工通信Half-duplex communication…

Unity API详解——Matrix4x4类

在脚本中通常用Vector3、QUaternion、Transform等类的属性和方法来对物体进行变换&#xff0c;Matrix4x4类通常在一些比较特殊的地方&#xff0c;如对摄像机的非标准投影变换等。本博客主要介绍Matrix4x4类的一些实例和静态方法。 文章目录 一、Matrix4x4类实例方法1、Multply…

机器学习实战教程(九):模型泛化

泛化能力 模型泛化是指机器学习模型对新的、未见过的数据的适应能力。在机器学习中&#xff0c;我们通常会将已有的数据集划分为训练集和测试集&#xff0c;使用训练集训练模型&#xff0c;然后使用测试集来评估模型的性能。模型在训练集上表现得好&#xff0c;并不一定能在测…

Redis源码分析(基于Redis7,对比Redis6)

PS: redis7.0.9版本的 1.Redis 源代码分类 1.1Redis 基本的数据结构 基础 Redis对象object.c字符串t_string.c列表t_list.c字典t_hash.c集合及有序集合t_set.c和z_set.c数据流 t_stream 底层实现结构 listpack.c 和 rax.c 简单动态字符串 sds.c整数集合 intset.c压缩列表 z…

【dp】最长递增子序列

文章目录 方法一&#xff1a;动态规划方法二&#xff1a;贪心 二分查找构造最长递增子序列 方法一&#xff1a;动态规划 dp[i]&#xff1a;末尾元素为arr[i]的最长子序列的长度 从0遍历到i - 1&#xff0c;若遍历到的元素小于当前值arr[i]&#xff0c;表示当前值arr[i]可以和…

国考省考行测:词句理解,词的对象指代,就近原则,主语一致法,语意语境分析上下文找出指代含义

国考省考行测&#xff1a;词句理解&#xff0c;词的对象指代&#xff0c;就近原则&#xff0c;主语一致法&#xff0c;语意语境分析上下文找出指代含义 2022找工作是学历、能力和运气的超强结合体! 公务员特招重点就是专业技能&#xff0c;附带行测和申论&#xff0c;而常规国…