✅技术社区项目—JWT身份验证

通用的JWT鉴权方案

JWT鉴权流程

在这里插入图片描述

基本流程分三步:
● 用户登录成功之后,后端将生成的jwt返回给前端,然后前端将其保存在本地缓存;
● 之后前端与后端的交互时,都将iwt放在请求头中,比如可以将其放在Http的身份认证的请求头 Authorization ,也可以通过自定义的请求头来传递
● 后端接收到用户的请求,从请求头中获取iwt,然后进行校验,通过之后,才响应相关的接口:否则表示未登3.买

|说明:技术派沿用session的方案,依然将iwt写入到cookie中

问题1
注意技术派里面的实现,即便jwt校验通过了,我们也依然从redis中去查了一下,判断是否有效
为什么这么设计呢?
● 因为jwt本身无状态,后端完全可以将redis这一层的存储都直接干掉,纯依赖jwt的特性来完成身份鉴权,但是由于它的无状态,后端减少存储压力是一个好处,同样也是一个弊端,后端失去了token的管控权限,如果我们希望提前失效某些用户身份,则无法支持
● 鉴于此,我们依然保留了redis中存储iwt的方案(这是主要原因,当然技术派作为一个让大家获取更多的知识点教学相长的项目,我们会尽可能的将相关知识点给引入进来,且尽量满足大厂项目规范来实现)

问题2
如何防范csrf攻击

使用jwt预防csrf攻击的主要原理就是jt是通过请求头,由is主动塞进去传递给后端的,而非cookie的方式,从而避免csrf漏洞攻击。

但是技术派的jwt也是用cookie进行携带jwt,并不能解决上面这个问题:同样的,session的方案,也可以将sessionld通过请求头的方式传递,按照这个说法也能避免csrf啊

当然上面这么说,完全没有问题,我们就一项技术本身而言,通常是基于其"官配”方案来讨论其优缺点,即以上的对比,基于下面的搭配来进行的
session-cookie 方案
jwt-requestHeader方案

补充:

● 使用Cookie来携带JWT令牌确实不能完全解决CSRF(Cross-Site Request Forgery,跨站请求伪造)攻击。尽管JWT通过Cookie传输可以提供一定程度的安全性,但它并不能防止CSRF攻击的发生。
● CSRF攻击利用了用户的已认证会话,在用户不知情的情况下,向目标网站发送未经授权的请求。即使JWT被存储在Cookie中,攻击者仍然可以通过构造恶意页面或者其他方式来触发用户在目标网站上的请求,从而利用用户的身份进行操作。
● 为了防止CSRF攻击,通常需要采取额外的措施,比如在请求中添加CSRF令牌(也称为同步令牌或者表单令牌),这样服务器可以验证请求是否来自合法的源。另外,确保敏感操作需要额外的确认步骤,比如输入密码或者进行双因素认证,也是防范CSRF攻击的有效方法。

总之,虽然使用Cookie传输JWT可以提高安全性,但要完全防止CSRF攻击,还需要结合其他安全措施。

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

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

相关文章

【编译原理】第六章课后习题(王原生第三版)

前言 课本: 编译原理(第三版)[王生原、董渊…等编著]习题: 主要习题内容是第一章到第八章,具体内容如下表 章节内容链接第一章课后部分选择题https://blog.csdn.net/Zchengjisihan/article/details/136243955第二章课…

C++ //练习 8.4 编写函数,以读模式打开一个文件,将其内容读入到一个string的vector中,将每一行作为一个独立的元素存于vector中。

C Primer(第5版) 练习 8.4 练习 8.4 编写函数,以读模式打开一个文件,将其内容读入到一个string的vector中,将每一行作为一个独立的元素存于vector中。 环境:Linux Ubuntu(云服务器&#xff09…

数据结构知识点总结-线性表(1)-线性表的定义、基本操作、顺序表表示

线性表 定义 线性表是具有相同数据类型的N(N>0)个元素的有限序列,其中N为表长,当N0时线性表是一张空表。 线性表的逻辑特征:每个非空的线性表都有一个表头元素和表尾元素,中间的每个元素有且仅有一个直…

第九章 shell编程之awk

目录 1.1. 概念 1.2. 工作流程 1.2.1. 如图: 1.2.2. 流程: 1.3. awk命令的基本语法 1.3.1. 格式: 1.3.2. BEGIN模式与END模式 1.3.3. awk的输出 1.4. awk程序执行方式 1.4.1. 通过命令行执行awk程序 1.4.2. awk命令调用脚本执行 …

用Python Matplotlib画图导致paper中含有Type-3字体,如何解决?

用Python Matplotlib画图导致paper中含有Type-3字体,如何解决? 在提交ACM或者IEEE论文之前,都会有格式的检查,格式的其中一个要求是paper中不能含有Type-3的字体。因为Type-1和True Type字体都是矢量字体,而Type-3并不…

STL常用容器(vector容器)---C++

STL常用容器目录 2.vector容器2.1 vector基本概念2.2 vector构造函数2.3 vector赋值操作2.4 vector容量和大小2.5 vector插入和删除2.6 vector数据存取2.7 vector互换容器2.7.1 vector互换容器收缩内存空间 2.8 vector预留空间 2.vector容器 2.1 vector基本概念 功能&#xf…

文献阅读:Large Language Models are Null-Shot Learners

文献阅读:Large Language Models are Null-Shot Learners 1. 文章简介2. 方法介绍3. 实验考察 & 结论 1. 基础实验 1. 实验设计2. 实验结果 2. 消融实验 1. 小模型上的有效性2. ∅CoT Prompting3. 位置影响4. 组成内容 4. 总结 & 思考 文献链接&#xff1…

计算机网络:思科实验【3-集线器与交换机的区别、交换机的自学习算法】

🌈个人主页:godspeed_lucip 🔥 系列专栏:Cisco Packet Tracer实验 本文对应的实验报告源文件请关注微信公众号程序员刘同学,回复思科获取下载链接。 实验目的实验环境实验内容集线器与交换机的区别交换机的自学习算法…

Cubase学习:Cubase 12常用快捷键

按键盘上的上下箭头就可以让选中的音符向上或向下移动 数字0键: 停止 Ctrl+数字 0 键: 新建视图层 Alt+数字0 键: 重新设置视图层 小数点键: 播放指针回零点 数字1 键: 左定位指针 数字 2 键: 右定位指针 数字3 键--数字9键: 分别控制 3--9 的7个定位标志 Alt+数字1 键--数字9键…

自定义神经网络四之编写自定义神经网络

文章目录 前言神经网络组件代码整体的项目结构Tensor张量Layers层NeuralNet神经网络Loss损失函数Optim优化器data数据处理train训练 神经网络解决实际问题实际问题训练和推理代码 总结 前言 自定义神经网络一之Tensor和神经网络 自定义神经网络二之模型训练推理 自定义神经网络…

【Android】View 与 ViewGroup

View 是 Android 所有控件的基类,我们平常所用的 TextView 和 ImageView 都是继承自 View 的,源码如下: public class TextView extends View implements ViewTreeObserver.OnPreDrawListener {... }public class ImageView extends View {.…

【Java程序设计】【C00297】基于Springboot的养老院管理系统(有论文)

基于Springboot的养老院管理系统(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的养老院管理系统设计与实现,本系统有管理员以及用户二种角色; 系统整体功能有:老人管理、字典表…

第八章 堆

第八章 堆 文章目录 第八章 堆0. 前情概述1. 堆(Heap)的核心概述1.1 堆的内存细分 2. 设置堆内存大小与OOM2.1 对空间大小的设置2.2 OutOfMemory举例 3. 年轻代与老年代4. 图解对象分配过程5. Minor GC、Major GC与Full GC5.1 最简单的分代式GC策略的触发条件 6. 堆空间分代思想…

【黑马程序员】3、TypeScript常用类型_黑马程序员前端TypeScript教程,TypeScript零基础入门到实战全套教程

课程地址:【黑马程序员前端TypeScript教程,TypeScript零基础入门到实战全套教程】 https://www.bilibili.com/video/BV14Z4y1u7pi/?share_sourcecopy_web&vd_sourceb1cb921b73fe3808550eaf2224d1c155 目录 3、TypeScript常用类型 3.1 类型注解 …

SAM轻量化的终点竟然是RepViT + SAM

本文首发:AIWalker,欢迎关注~~ 殊途同归!SAM轻量化的终点竟然是RepViT SAM,移动端速度可达38.7fps。 对于 2023 年的计算机视觉领域来说,「分割一切」(Segment Anything Model)是备受关注的一项…

安装 Ubuntu 22.04.3 和 docker

文章目录 一、安装 Ubuntu 22.04.31. 简介2. 下载地址3. 系统安装4. 系统配置 二、安装 Docker1. 安装 docker2. 安装 docker compose3. 配置 docker 一、安装 Ubuntu 22.04.3 1. 简介 Ubuntu 22.04.3 是Linux操作系统的一个版本。LTS 版本支持周期到2032年。 系统要求双核 C…

了解 JavaScript 中的重放攻击和复现攻击

在网络安全领域,重放攻击(Replay Attack)和复现攻击(Playback Attack)是一些可能导致安全漏洞的攻击形式。这两种攻击类型涉及在通信过程中再次发送已经捕获的数据,以达到欺骗系统的目的。本文将介绍 JavaS…

高并发下如何保证数据的一致性

拿转账来说,在高并发下场景下,对账户余额操作的一致性,是非常重要的。如果代码写的时候没考虑并发一致性,就会导致公司亏损。所以本篇主要聊一下,如何在并发场景下,保证账户余额的一致性。 扣款流程 伪代码…

常用实验室器皿耐硝酸盐酸进口PFA材质容量瓶螺纹盖密封效果好

PFA容量瓶规格参考:10ml、25ml、50ml、100ml、250ml、500ml、1000ml。 别名可溶性聚四氟乙烯容量瓶、特氟龙容量瓶。常用于ICP-MS、ICP-OES等痕量分析以及同位素分析等实验,也可在地质、电子化学品、半导体分析测试、疾控中心、制药厂、环境检测中心等机…

【Linux基础】vim、常用指令、组管理和组权限

Linux基础 1、目录结构2、vi和vim3、常用指令运行级别找回密码帮助指令时间日期指令搜索查找文件目录操作磁盘管理指令压缩和解压缩 4、组管理和组权限用户操作指令权限 1、目录结构 Linux的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录“/”&a…