web应用合规(一)双因子认证2FA解决方案

文章目录

  • 背景知识
    • 什么是2FA
    • 认证因子分类
      • 知识因素
      • 持有因素
  • 解决方案
    • 密码 + OTP
    • 密码 + TOTP
    • 方案对比
  • 参考文档
  • 后记

     最近做海外项目,对合规方面的要求比较高,写一篇流水账来记录下 登录时的双因子认证过程,于是开启了2FA(2 factor authentication)探索之旅~~

背景知识

什么是2FA

双重身份验证(2FA) 是一种身份验证方法,用户必须提供两个证据,如密码和一次性通行码,才能证明自己的身份并访问在线帐户或其他敏感资源。

认证因子分类


查阅资料,发现大家对于因子分类各有见解,此处就只列举最常规的几类:
  • 知识因素:用户知道的内容,例如密码、安全问题
  • 持有因素:用户拥有的东西,例如手机(验证码)、物理令牌、邮箱(接收一次性密码)
  • 属性因素:用户个人具备的特征,例如生物特征(指纹、人脸识别、虹膜)

在国外获取用户的生物特征信息等很困难,所以2FA的解决方案只有知识因素+持有因素了,下面着重对这两类认证因子进行介绍。

知识因素

最常见是密码,其他的还有个人识别码(PIN)和安全问题的答案等。

值得注意的是,需要密码和安全问题的常见做法并不是真正的 2FA,因为它使用了两个相同类型的因素,这里是两个知识因素。相反,这是一种两步验证过程。

持有因素

两种最常见的持有因素类型是软件令牌和硬件令牌。

令牌类型方式说明
软件令牌OTP4-8位数字的一次性密码,通常基于短信、电子邮箱
TOTP基于时间的一次性密码,需要用户安装身份验证APP(Google Authenticator、Authy等)
硬件令牌密钥扣、身份证、加密狗等

解决方案

根据探索内容,针对2FA目前有两种简单的解决方案:

  • 密码 + OTP
  • 密码 + TOTP

密码 + OTP

交互流程:

  1. 用户在登录页,输入用户名+密码,点击登录
  2. 登录成功后,服务端生成OTP并存至redis(设置有效期30min)
  3. 服务端发送包含OTP的邮件到用户邮箱(注册时必填)
  4. web端接收到登录成功反馈后,跳转至输入认证码页面,等待用户输入
  5. 用户输入OTP,点击认证,服务端对比成功后进入系统

NOTE:大部分文章都建议使用短信发送OTP,因为SIM卡被劫持的风险比邮箱低,但是获取用户手机号难度大(一般不强制,毕竟隐私性强),还有发短信费用太高了。。。所以本文最后采用邮箱方式。

密码 + TOTP

流程如下:

  1. 密钥共享:服务端生成共享密钥,并通过安全渠道传输给客户端(通常是用户设备)。
  2. 生成一次性密码:客户端使用这个密钥和一个时间基数(例如每30秒更新一次),结合特定的Hash算法(如HMAC-SHA1),生成一个一次性密码。这个密码通常是6位数的数字,有时也会是更长。
  3. 一次性密码验证:用户在登录页面输入这个一次性密码,服务端同样用同样的方法计算出密码,并将它与服务端生成的密码比较。如果两者匹配,则认证成功。

TOTP流程图

方案对比

对比点密码+OTP密码+TOTP
操作复杂度高,用户需安装身份验证APP(国外用户都有?)
安全性低,邮箱被劫持风险很高

参考文档

多重要素验证
什么是双重身份验证?
多因子认证都有哪些认证方式?
Enabling Two-Factor Authentication For Your Web Application
2FA双因素认证 - TOTP详解
双因素认证(2FA, two-factor authentication)在国内似乎不流行?

后记

第一次接触国外web应用合规还蛮新奇的,翻阅资料后,才知道gitlab、邮箱等都有开启2FA认证的设置,只是之前没发现,本篇文章是记录探索过程的随笔,有错误的地方还望指正~~

gitlab的2FA开启配置

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jenkins 构建报错ERROR: Error fetching remote repo ‘origin‘

问题描述 修改项目的仓库地址后,使用jenkins构建报错 Running as SYSTEM Building in workspace /var/jenkins_home/workspace/【测试】客户端/client-fonchain-main The recommended git tool is: NONE using credential 680a5841-cfa5-4d8a-bb38-977f796c26dd&g…

【包教包会】CocosCreator3.x框架——音频声音模块(无需导入、无需常驻节点)

下载地址:AudioDemo3.x: CocosCreator3.x框架——音频模块 注意事项: 1、gi.musicPlay、gi.soundPlay是同步函数,使用前必须先将音频加载到缓存 Demo通过SceneLoading实现了一个极简的Loading页面,将音频全部加载后进入游戏&…

Find My汽车钥匙|苹果Find My技术与钥匙结合,智能防丢,全球定位

随着科技的发展,传统汽车钥匙向智能车钥匙发展,智能车钥匙是一种采用先进技术打造的汽车钥匙,它通过无线控制技术来实现对车门、后备箱和油箱盖等部件的远程控制。智能车钥匙的出现,不仅提升了汽车的安全性能,同时也让…

蓝桥杯—STM32G431RBT6(RTC时钟获取时间和日期)

一、RTC是什么,有什么用? 在 STM32 中,RTC(Real-Time Clock,实时时钟)主要有以下作用: 时间保持:即使在系统断电情况下,也能持续记录时间。(需要纽扣电池供电…

LORA DASH -一种更高效的微调方式

LORA DASH -一种更高效的微调方式 概述 大型语言模型(LLMs)通过在大规模数据集上的预训练,能够捕捉和学习丰富的语言特征和模式。目前,尽管预训练模型在诸多任务上取得了显著的成果,但它们在特定任务上的表现仍有提升…

iOS--App启动过程及优化

前言 App启动是用户对于一个app的第一印象,因此如何使用户在最短的时间打开进入app显得格外重要。启动优化因此成为了App调优至关重要的一项。 只有具体了解了App的启动过程,我们才能对其进行优化。 App启动过程 App启动分为冷启动和热启动 热启动&…

【2025】springboot基于微信小程序记账本的设计与实现(源码+文档+调试+答疑)

文章目录 前言一、主要技术?二、项目内容1.整体介绍(示范)2.运行截图3.系统测试 总结更多项目 前言 时代在飞速进步,每个行业都在努力发展现在先进技术,通过这些先进的技术来提高自己的水平和优势,记账本小…

臀部筋膜炎吃什么药最有效

臀部筋膜炎患者大多数会出现疼痛的症状,且疼痛程度可能会随着病情的加重而不断加重。疼痛可能表现为持续性或间歇性,严重时甚至可能出现针扎样疼痛。在疼痛的同时,如果按压臀部局部,可能会导致疼痛症状加剧。由于炎症刺激&#xf…

WPS在表格中填写材料时,内容过多导致表格不换页,其余内容无法正常显示 以及 内容过多,导致表格换页——解决方法

一、现象 1,内容过多导致表格不换页,其余内容无法正常显示 2,内容过多,导致表格换页 二、解决方法 在表格内右击,选择表格属性 在菜单栏选择行,勾选允许跨页断行,点击确定即可 1&#xff0…

【STM32开发笔记】移植AI框架TensorFlow到STM32单片机【上篇】

【STM32开发笔记】移植AI框架TensorFlow到STM32单片机【上篇】 一、TFLM是什么?二、TFLM开源项目2.1 下载TFLM源代码2.2 TFLM基准测试说明2.3 TFLM基准测试命令 三、TFLM初步体验3.1 PC上运行Keyword基准测试3.2 PC上运行Person detection基准测试3.3 No module nam…

Redis篇(缓存机制 - 分布式缓存)(持续更新迭代)

目录 一、单点 Redis 的问题 1. 数据丢失问题 2. 并发能力问题 3. 故障恢复问题 4. 存储能力问题 5. 四种问题的解决方案 二、Redis持久化(两种方案) 1. RDB持久化 1.1. 简介 1.2. 执行时机 save命令 bgsave命令 停机时 触发RDB条件 1.3. …

phpstudy简易使用

注意,本文所述的操作步骤均建立在电脑上已经完成php环境变量的配置与vscode的安装之上 、

河南移动:核心营业系统稳定运行超300天,数据库分布式升级实践|OceanBase案例

河南移动,作为电信全业务运营企业,不仅拥有庞大的客户群体和业务规模,还引领着业务产品与服务体系的创新发展。河南移动的原有核心营业系统承载着超过6000万的庞大用户量,管理着超过80TB的海量数据,因此也面临着数据规…

网络安全法中,个人信息保护的措施和原则有哪些?

《中华人民共和国网络安全法》中关于个人信息保护的规定强调了几项基本原则和措施,以确保个人信息的安全。以下是其中的一些要点: 原则 合法性:个人信息的收集和使用必须符合法律规定。 正当性:信息收集和使用的目的是正当的&…

算法葫芦书(笔试面试)

一、特征工程 1.特征归一化:所有特征统一到一个区间内 线性函数归一化(0到1区间)、零均值归一化(均值0,标准差1) 2.类比型特征->数值性特征 序号编码、独热编码、二进制编码(010&#xf…

数学建模--什么是数学建模?数学建模应该怎么准备?

前言 这是去年底学数学建模老哥的建模课程笔记;未来本人将陆陆续续的更新数学建模相关的一些基础算法,大家可以持续关注一下;提示:数学建模只有实战才能提升,光学算法没有啥意义,也很难学的很懂。 文章目录…

基于ESP8266—AT指令连接阿里云+MQTT透传数据(2)

MQTT_TX设备为发送数据的Topic,使用MQTT-fx软件实现 MQTT_RX设备为接收(订阅)数据的Topic,使用ESP8266通过AT指令实现 一、使用MQTT-fx实现发送数据 首先进入控制台,获取发送设备 “ MQTT_TX ” 的MQTT连接参数,具体具体操作如…

【Redis入门到精通五】Java如何像使用MySQL一样使用Redis(jedis安装及使用)

目录 Jedis 1.jedis是什么 2.jedis的安装配置 3.jedis的基础命令操作展示 1.set和get操作: 2.exists和del操作: 3.keys和type操作: 4. expire和ttl: Jedis Java 操作 redis 的客⼾端有很多,其中最知名的是 jedi…

Mysql 存储过程

1.需求: users表中的数据 如果在users_copy1表中存在(2各表id相等),则根据users表的数据更新users_copy1表的数据,这两个表id相等。 例子: users表数据: users_copy1表数据: 当执…

docker运行arm64架构的镜像、不同平台镜像构建

背景 Docker 允许开发者将应用及其依赖打包成一个轻量级、可移植的容器,实现“一次构建,到处运行”的目标。然而,不同的操作系统和硬件架构对容器镜像有不同的要求。例如,Linux 和 Windows 系统有不同的文件系统和系统调用&#…