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

news2024/11/6 9:35:50

文章目录

  • 背景知识
    • 什么是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.coloradmin.cn/o/2180533.html

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

相关文章

CTF网络安全大赛_网安战队简历

CTF网络安全大赛 CTF比赛介绍 CTF(Capture The Flag,中文:夺旗赛)是网络安全领域中一种信息安全竞赛形式,起源于1996年。DEFCON全球黑客大会,代替了之前黑客们通过互相发起真实攻击进行技术比拼的方式。参…

Shopee虾皮店铺难出爆品?你可能忘了测款!

大部分Shopee虾皮卖家可能都经历过店铺销量一直平平无奇、较长时间出不了爆品的情况,明明做足了功课,为什么还会出现这种现象?那有可能是店铺运营没有明确的重点,太“雨露均沾”反而难以显著提升销量,应该对一个或部分…

西语中关于拆盲盒的表达是什么?柯桥西语口语培训

拆盲盒常常要靠运气。那么西语中有哪些相关的表达呢? 好运 buena suerte - tener (buena)suerte 最常用的形容“好运”的表达。可以说tener suerte de hacer algo,运气好而做成某事。 - ¡Vaya potra! / ¡Qu potra! 用…

兴业周报|十一黄金周即将到来~楼市利好政策重磅来袭

黄金地段:社区位于东三环核心位置,定位于CBD商务圈旁的纯居住区,容积率不足2.8,绿化率达到50%以上,树种超过80余种,实现“每个楼座都在园林中”的效果。 配套成熟:周边配套齐全,富力…

Error和Exception

1.异常体系结构 (1)Java把异常当作对象处理,定义一个基类java.lang.Throwable作为所有异常的超类。 (2)Java API中定义了许多异常类,这些异常类分为两大类,错误Error和异常Exception 2.什么是…

湿气缠身不用愁,拔罐疗法助你轻松“祛湿”!

在这个快节奏的时代,我们常常忽略了身体发出的微妙信号,其中,“湿气重”便是许多现代人面临的隐形健康挑战。湿气,中医理论中的一个重要概念,它像无形的枷锁,悄悄影响着我们的体态、精神状态乃至生活质量。…

react-问卷星项目(3)

项目实战 React Hooks 缓存,性能优化,提升时间效率,但是不要为了技术而优化,应该是为了业务而进行优化 内置Hooks保证基础功能,灵活配合实现业务功能,抽离公共部分,自定义Hooks或者第三方&am…

鸿蒙开发(NEXT/API 12)【穿戴设备信息查询】手机侧应用开发

// 在使用Wear Engine服务前,请导入WearEngine与相关模块 import { wearEngine } from kit.WearEngine; import { BusinessError } from kit.BasicServicesKit;查询穿戴设备是否支持某种WearEngine能力集 注意 该接口的调用需要在开发者联盟申请设备基础信息权限。…

Java 异常处理机制

目录 1.异常处理的五个关键字 测试一:理解try catch finally 的作用 测试二:设置想要捕获的异常类型 测试三:可以写多个catch。 2.异常快捷键 3.在方法体中抛出异常用throw;在方法参数后面抛出异常用throws (1&…

Ubuntu 手动安装 ollama

官方linux安装ollama命令: curl -fsSL https://ollama.com/install.sh | sh 运行结果: 由于官方提供的ollama安装命令老是安装中断,所以我选择手动安装。 手动安装步骤: 官网链接:ollama/docs/linux.md at main ollama/ollama…

盛事启幕 | 第三届OpenHarmony技术大会重磅官宣,邀您共绘智联未来

未来已来,科技何向? ——10月12日-13日众多大咖齐聚上海 聚焦OpenHarmony生态前沿 与您一同解码技术的下一片蓝海

【STM32单片机_(HAL库)】4-1【定时器TIM】定时器中断点灯实验

1.硬件 STM32单片机最小系统LED灯模块 2.软件 timer驱动文件添加定时器HAL驱动层文件添加GPIO常用函数定时器中断配置流程main.c程序 #include "sys.h" #include "delay.h" #include "led.h" #include "timer.h"int main(void) {H…

seata服务端部署

1.下载seata 官网下载地址:http://seata.io/zh-cn/blog/download.html 或者下载 作者已经下载的压缩包1.4.0 注意!!! 要参考对应的版本,否则可能出现无法正常启动的情况。 参考文档 下载完毕后解压压缩文件 2.修改配…

6个Android ANR面试题和优化方案

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 面试题 1、 解释什么是ANR以及它在Android中是如何产生的? ANR是指应用程序未响应,通常是因为主线程被阻塞导致无法及…

【性能测试】jmeter工具核心组件说明手册

前言 Apache JMeter 是一个用于压力测试和性能测量的开源工具,它被设计用来测试静态和动态资源(例如静态文件、CGI接口、Java 对象、数据库和 FTP 服务器),以及分析整体系统性能。JMeter提供了丰富的组件集,使得用户可…

国内邮件推送防拦截秘籍与内容优化技巧详解

企业需优化邮件内容、选择优质服务商、配置域名验证,避免垃圾邮件特征,控制发送频率和策略,以提高邮件送达率和用户互动率。ZohoCampaigns等平台提供多项功能助力邮件营销。 一、了解邮件拦截的常见原因 在讨论如何避免邮件被拦截之前&#…

Cookie Session Token的各种知识

Session 1、为什么有session? 因为HTTP是无状态协议,每次请求服务器并不知道历史请求的记录,Session和Cookie主要就是为了弥补无状态的特性 2、Session是什么 客户端请求时,服务端开辟一块内存空间存放Session对象,存…

(二)大模型调用

一、基本概念 1.1、Prompt 大模型的所有输入,即,我们每一次访问大模型的输入为一个 Prompt, 而大模型给我们的返回结果则被称为 Completion。 1.2、Temperature LLM 生成是具有随机性的,在模型的顶层通过选取不同预测概率的预测结…

SOLIDWORKS 2025 PDM 更新亮点:效率与性能的提升!

SOLIDWORKS PDM 持续致力于为用户提供更加高效、直观且灵活的数据管理解决方案。SOLIDWORKS 2025 也对PDM功能进行了多方面的改进,旨在提高工作效率,并增强系统性能。 以下是SOLIDWORKS 2025 PDM中的几项关键功能的详细介绍。 1经过改进的材料明细表可…

【C++】面向对象编程的三大特性:深入解析多态机制

C语法相关知识点可以通过点击以下链接进行学习一起加油!命名空间缺省参数与函数重载C相关特性类和对象-上篇类和对象-中篇类和对象-下篇日期类C/C内存管理模板初阶String使用String模拟实现Vector使用及其模拟实现List使用及其模拟实现容器适配器Stack与QueuePriori…