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

✅技术社区项目—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攻击,还需要结合其他安全措施。

相关文章:

  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • 【黑马程序员】2、TypeScript介绍_黑马程序员前端TypeScript教程,TypeScript零基础入门到实战全套教程
  • 【论文精读】ConvNeXt
  • 2.26作业
  • Kafka3.x进阶
  • 百亿大佬南存辉瞄准光伏板块,正泰电器分拆正泰安能上市
  • Android的LiveData
  • 机器学习理论知识学习
  • 化学分子Mol2文件格式与使用注意事项
  • vue-element-admin如何绕开系统的请求的路由,使用静态路由
  • 【GameFramework框架内置模块】4、内置模块之调试器(Debugger)
  • https://htmlunit.sourceforge.io/
  • SpringBoot快速入门(黑马学习笔记)
  • Vue.js+SpringBoot开发超市商品管理系统
  • 基于Springboot + Vue 母婴商城系统
  • co.js - 让异步代码同步化
  • ECMAScript 6 学习之路 ( 四 ) String 字符串扩展
  • JSONP原理
  • Laravel Mix运行时关于es2015报错解决方案
  • leetcode-27. Remove Element
  • Puppeteer:浏览器控制器
  • spring boot 整合mybatis 无法输出sql的问题
  • Spring Cloud Alibaba迁移指南(一):一行代码从 Hystrix 迁移到 Sentinel
  • Twitter赢在开放,三年创造奇迹
  • 创建一个Struts2项目maven 方式
  • 从PHP迁移至Golang - 基础篇
  • 大数据与云计算学习:数据分析(二)
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 理解在java “”i=i++;”所发生的事情
  • 那些年我们用过的显示性能指标
  • 前端路由实现-history
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 微信小程序填坑清单
  • Linux权限管理(week1_day5)--技术流ken
  • 第二十章:异步和文件I/O.(二十三)
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • ​香农与信息论三大定律
  • (33)STM32——485实验笔记
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (9)目标检测_SSD的原理
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (初研) Sentence-embedding fine-tune notebook
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (一)pytest自动化测试框架之生成测试报告(mac系统)
  • (转)scrum常见工具列表
  • (轉貼) UML中文FAQ (OO) (UML)
  • ***通过什么方式***网吧
  • ***原理与防范
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .NET delegate 委托 、 Event 事件
  • .Net MVC + EF搭建学生管理系统
  • .NET企业级应用架构设计系列之技术选型