当前位置: 首页 > news >正文

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

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

目录

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

一、登录流程

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账号注册登录设计》

相关文章:

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

跨平台跨端的登录流程及其安全设计 目录 跨平台跨端的登录流程及其安全设计 一、登录流程 1.1、登录流程时序图 1.2、三方App 登录 1.3、请求的路由守卫 二、注册流程 2.1、注册流程时序图 2.2、多因素认证 2.3、自动跳转登录页面 三、涉及的技术与安全 3.1、用户…...

如何在Java中创建临时文件?

在Java程序中,有时需要创建临时文件来暂存数据或者执行某些操作。Java提供了许多方式来创建临时文件。在本教程中,我们将介绍如何使用Java标准库来创建临时文件。 一、使用File.createTempFile()方法 Java标准库中的File类提供了createTempFile()方法来…...

Vue表单基本操作-收集表单数据

收集表单数据 使用vue中的v-model收集表单里面的数据,不同的表单元素配合v-model会有不同的写法和技巧 本次的表单元素包括:文本框,单选,多选,下拉框,文本域 编写表单元素 首先编写表单元素,…...

Android 一个获取网址时间的Demo

Android 一个获取网址时间的Demo 文章目录 Android 一个获取网址时间的Demo通过一个网址获取时间的代码关于Android NTP 时间Android 同步时间代码 前段时间有个客户想用局域网同步Android 设备的时间,开发后把这个demo分享一下。 效果: 这里也获取了阿…...

ijkplayer解码流程源码解读

ijkplayer是一款基于ffmpeg的在移动端比较流行的开源播放器。FFmpeg是一款用于多媒体处理、音视频编解码的自由软件工程,采用LGPL或GPL许可证。 要想理解ijkplayer源码,首先得知道视频播放器的基本原理。 视频播放器播放一个互联网上的视频文件&#xf…...

2023年值得关注的3个品牌趋势,帮你弯道超车

2023年,大环境开放,压抑三年的消费蓄势待发,品牌如何唤醒消费者的、热情成了重中之重的大事。 春风和煦,万物生长。又到了各类品牌、各位营销人踌躇满志、斗志昂扬的时候了,浅析一下2023品牌宣传趋势,抓住…...

软考-高级项目管理(二十)

第20章 高级项目管理 (P572考0-2分选择 性价比很低) 在项目集管理中涉及的相关角色主要包括: 项目集发起人、项目集指导委员会、项目集经理、其他影响项目集的干系人 1.项目集发起人 项目集发起人和收益人是负责承诺将组织的资源应用于项目集,并致力于使项目集取得…...

RTMP协议深度解析:从原理到实践,掌握实时流媒体传输技术

目录标题 1. 引言1.1 流媒体传输技术的重要性1.2 为什么选择RTMP协议1.3 RTMP协议的发展与应用 2. RTMP协议基础2.1 RTMP协议简介2.2 RTMP协议与其他流媒体协议的比较2.3 RTMP协议的组成与工作原理 3. RTMP协议详解3.1 RTMP数据单元(Message)3.2 RTMP数据…...

2023mathorcup数学建模ABCD思路分析

更多思路分析,请看文末 A题:量子计算机在信用评分卡组合优化中的应用 题目提到了信用评分卡的组合优化,这是一个经典的优化问题。在这个问题中,需要通过不同的组合方式来选择不同的阈值,以达到最大化贷款利息收入和最…...

普通家庭,千万不要投入大量时间和金钱,让孩子去苦学和培养AI机器人编程了...

普通家庭,千万不要投入大量时间和金钱,让孩子去苦学和培养一些看似高端,实际却用处不大的兴趣爱好课程了,比如学钢琴、学音乐、学AI机器人编程这些兴趣爱好课程。 这些对孩子的成长其实意义并不大,尤其是AI机器人编程。…...

C++学习(day2)

文章目录 四. C中的字符串4.1 C支持两种风格的字符串4.2 string类型的赋值和初始化4.3 C风格和C风格的字符串互换4.4 string类中三个重要成员函数4.5 string类型的比较4.6 string类型的成员访问 at()6.8 string类型数据的输入 五、bool类型六、引用(reference&#…...

软考 - IP地址与网络划分

一.IP组成 1.1 首个八位字节规则 1.2 地址掩码 IP地址掩码 标准地址掩码 A类:255.0.0.0 前1个字节是网络号 后3个字节是主机号 B类:255.255.0.0 前2个字节是网络号 后2个字节是主机号 C类;255.255.255.0 前3个字节是网络号 后1个字节是主机号…...

Apifox软件的基础使用方式

Apifox软件的基础使用方式 简单方便的用途 该工具是接口在线调试工具,这里我给到连接供大家去官网下载,我个人觉得是比较于postman工具好用,提供的语言操作是中文版本的便于操作 下载和安装 https://apifox.com/?utm_sourcebaidu&ut…...

【Tensorflow】模型如何加载HDF文件数据集?

如果每个样本都被保存为一个单独的 HDF5 文件,可以使用 tf.data.Dataset.list_files 函数来创建一个文件名数据集,然后使用 tf.data.Dataset.interleave 函数来并行读取多个文件。 下面的示例展示了如何从多个 HDF5 文件中读取数据并创建一个 tf.data.D…...

校招又临近了,怎么在面试中应对设计模式相关问题呢?

夏天开始了,那么夏天结束时的毕业季也不远了。毕业是个伤感、期待而又略带残酷的时节,就像蜜桃无论成熟与否都会在这个时间被采摘,如果毫无准备就踏入社会,就会……马上变成低级社畜。所以说还是要早点为了毕业找工作做点准备&…...

padans关于数据处理的杂谈

情况:业务数据基本字段会有如下: Index([时间, 地区, 产品, 字段, 数值], dtypeobject)这样就会引发一个经典“三角不可能定理”,如何同时简约展现分时序、分产品、分字段数据。)一般来说, 1、时序为作为单独的分类&…...

神经网络的理解

文章目录 概念得分函数损失函数神经网络结构非线性激活函数神经网络运行过程神经网络能够做的事情概念 人工神经网络(Artificial Neural Networks,简写为ANNs)也简称为神经网络(NNs)或称作连接模型(Connection Model),它是一种模仿动物神经网络行为特征,进行分布式并…...

夏驰和徐策带你从零开始学数据结构——哈希表

哈希表的概念: 哈希表是一种常用的数据结构,它可以在 O(1) 的时间复杂度内执行插入、查找和删除操作。哈希表的核心思想是使用哈希函数将键值对映射到数组中的一个位置上,从而实现快速的访问和修改。 哈希表由两个主要部分组成:…...

linux实现网络程序

1️⃣ 在linux下,通过套接字实现服务器和客户端的通信。 2️⃣ 实现单线程、多线程通信。或者实现线程池来通信。 3️⃣ 优化通信,增加守护进程。 有情提醒,类里面默认的函数是内联。内联函数在调用的地方展开,没有函数地址&…...

FreeRTOS 队列(二)

文章目录 一、向队列发送消息1. 函数原型(1)函数 xQueueOverwrite()(2)函数 xQueueGenericSend()(3)函数 xQueueSendFromISR()、xQueueSendToBackFromISR()、xQueueSendToFrontFromISR()(4&…...

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具

文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...

爬虫基础学习day2

# 爬虫设计领域 工商&#xff1a;企查查、天眼查短视频&#xff1a;抖音、快手、西瓜 ---> 飞瓜电商&#xff1a;京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空&#xff1a;抓取所有航空公司价格 ---> 去哪儿自媒体&#xff1a;采集自媒体数据进…...

算法:模拟

1.替换所有的问号 1576. 替换所有的问号 - 力扣&#xff08;LeetCode&#xff09; ​遍历字符串​&#xff1a;通过外层循环逐一检查每个字符。​遇到 ? 时处理​&#xff1a; 内层循环遍历小写字母&#xff08;a 到 z&#xff09;。对每个字母检查是否满足&#xff1a; ​与…...

使用LangGraph和LangSmith构建多智能体人工智能系统

现在&#xff0c;通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战&#xff0c;比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

腾讯云V3签名

想要接入腾讯云的Api&#xff0c;必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口&#xff0c;但总是卡在签名这一步&#xff0c;最后放弃选择SDK&#xff0c;这次终于自己代码实现。 可能腾讯云翻新了接口文档&#xff0c;现在阅读起来&#xff0c;清晰了很多&…...

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时&#xff0c;显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会

在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...