JWT基于Cookie的会话保持,并解决CSRF问题的方案

使用JWT进行浏览器接口请求,在使用Cookie进行会话保持传递Token时,可能会存在 CSRF 漏洞问题,同时也要避免在产生XSS漏洞时泄漏Token问题,如下图在尽可能避免CSRF和保护Token方面设计了方案。

要点解释如下:
将JWT存入Cookie的优点是无需显式传递,并且对于 image 和文件下载接口比较友好,但是要特别注意设置 HttpOnly 参数禁止通过JS 的方式获取 Cookie,这样能在系统某些场景发生XSS漏洞时也能避免Cookie泄漏。

但是基于Cookie的缺点是会存在CSRF跨站攻击问题。为了避免CSRF问题可以通过自定义Header方式进行接口调用,所以我们可以在使用Cookie存储传递JWT的基础上,增加一个无实际意义并且唯一的sessionId(同时存入浏览器sessionStorage和JWT内容中),每个接口调用都从sessionStorage中读取sessionId并设置到自定义Header中调用接口传递sessionId,在服务端使用过滤器或者拦截器验证自定义header中sessionId的值是否和JWT中的值一致来保证合法性。

在这里插入图片描述
注:JWT只是防篡改,但是默认情况下它body区域的内容是不加密的,如果你需要存储相对敏感信息在JWT中,可以对内容区域进行加密,在服务端解密读取内容。


(END)

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

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

相关文章

Snagit 2024:让你的屏幕活动瞬间变得生动有力 mac/win版

Snagit 2024 屏幕录制与截图软件是一款功能强大的工具,专为现代用户设计,以满足他们在工作、学习和娱乐中对屏幕内容捕捉和分享的需求。这款软件结合了屏幕录制和截图功能,为用户提供了一种高效、便捷的方式来捕捉屏幕上的精彩瞬间。 Snagit…

xxl-job--01--简介

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1.xxl-job1. 1 发展历史1.2 XXL-JOB的系统架构1.3 xxl-job与其他框架对比 2. XXL-JOB的使用2.1 准备工作- 配置调度中心XXL-JOB的数据表 2.2 配置执行器1 引入依赖包…

vue cesium加载点与定位到指定位置

vue cesium定位到指定位置 window.viewer.camera.flyTo({destination: Cesium.Cartesian3.fromDegrees(point.longDeg, point.latDeg, 6500000), orientation: {heading: 6.2079384332084935, roll: 0.00031509431759868534, pitch: -1.535}, duration: 3})vue cesium加载点 …

【蛀牙】如何选择牙刷,牙膏和牙杯(含其他日常牙具:牙线,漱口水,冲牙器)

程序员生活指南之 【蛀牙】如何选择牙刷,牙膏和牙杯(含其他日常牙具:牙线,漱口水,冲牙器) 文章目录 一、如何选择牙刷,牙膏和牙杯1、如何选择牙刷2、如何选择牙膏3、如何选择牙杯 二、日常牙具&…

为什么HashMap的键值可以为null,而ConcurrentHashMap不行?

写在开头 今天在写《HashMap很美好,但线程不安全怎么办?ConcurrentHashMap告诉你答案!》这篇文章的时候,漏了一个知识点,知道晚上吃饭的时候才凸显想到,关于ConcurrentHashMap在存储Key与Value的时候&…

【Java】面向对象之多态超级详解!!

文章目录 前言一、多态1.1 多态的概念1.2 多态的实现条件1.3 重写1.3.1方法重写的规则1.3.2重写和重载的区别 1.4 向上转型和向下转型1.4.1向上转型1.4.2向下转型 1.5 多态的优缺点1.5.1 使用多态的好处1.5.2 使用多态的缺陷 结语 前言 为了深入了解JAVA的面向对象的特性&…

基于yolov5的电瓶车和自行车检测系统,可进行图像目标检测,也可进行视屏和摄像检测(pytorch框架)【python源码+UI界面+功能源码详解】

功能演示: 基于yolov5的电瓶车和自行车检测系统_哔哩哔哩_bilibili (一)简介 基于yolov5的电瓶车和自行车检测系统是在pytorch框架下实现的,这是一个完整的项目,包括代码,数据集,训练好的模型…

协程库项目—日志模块

日志模块程序结构图 sylarLog ├── LogLevel(日志级别封装类) │ ├── 提供“从日志级别枚举值转换到字符串”、“从字符串转换相应的日志级别枚举值”等方法 ├── LogEvent(日志事件类) │ ├── 封装日志事件的属性…

Unity(第二十一部)动画的基础了解(感觉不了解其实也行)

1、动画组件老的是Animations 动画视频Play Automatically 是否自动播放Animate Physics 驱动方式,勾选后是物理驱动Culling Type 剔除方式 默认总是动画化就会一直执行下去,第二个是基于渲染播放(离开镜头后不执行), …

高性能服务系列【二】CPU和内存

现代计算机的系统架构十分复杂。在服务器中,双路处理器已经十分常见。最近Arm处理器实现双路共384核心,要知道目前Linux内核最高只支持256核,这就有点尴尬。 多路处理器将越来越普遍,对性能的影响和传统架构有不小的差别&#xf…

MySQL中json类型的字段

有些很复杂的信息,我们一般会用扩展字段传一个json串,字段一般用text类型存在数据库。mysql5.7以后支持json类型的字段,还可以进行sql查询与修改json内的某个字段的能力。 1.json字段定义 ip_info json DEFAULT NULL COMMENT ip信息, 2.按…

GO基本类型一些记录

基本类型一些记录 1.直接粘贴文本进println(" ")2.中文字符串长度别用len( )3.byte本质是uint8 1.直接粘贴文本进println(" ") GoLand会自动补充转义符 2.中文字符串长度别用len( ) 用相应编码库的方法,一般utf8即可 utf8.RuneCountInStrin…

PySide6实现word转化pdf

目录 一:实现思路 二:实现代码 三:完整代码和界面 一:实现思路 利用PySide6创建两个按钮和一个显示区域,一个选择文件按钮,一个转化按钮和信息展示,操作文件按钮选择一个待转化的word文档。并且展示文件路径到信息展示区,操作转化按钮,读取选择的文件转化为pdf。并…

ThreadLocal介绍

文章目录 ThreadLocal源码分析:set方法get方法remove方法 ThreadLocal内存泄漏问题 ThreadLocal ThreadLocal提供了线程局部变量,每个线程都可以通过set和get方法来对这个变量进行操作,但不会和其他线程的局部变量冲突,实现了线程…

Doris实战——拈花云科的数据中台实践

目录 前言 一、业务背景 二、数据中台1.0—Lambda 三、新架构的设计目标 四、数据中台2.0—Apache Doris 4.1 新架构数据流转 4.2 新架构收益 五、新架构的落地实践 5.1 模型选择 5.1.1 Unique模型 5.1.2 Aggregate模型 5.2 资源管理 5.3 批量建表 5.4 计算实现…

Stable Diffusion 模型分享:Realistic Stock Photo(真实的库存照片)

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八 下载地址 模型介绍 条目内容类型大模型基础模型SDXL 1.0来源CIVITAI作者PromptSharingSamaritan文件名称reali…

原生GO开发的博客系统

Go博客实战教程,是一个练手级项目教程,使用原生Go开发,未使用任何框架。 如何使用原生Go开发一个web项目 循序渐进,掌握编程思维和思路 初步具有工程思维,能适应一般的开发工作 1. 搭建项目 package mainimport (&q…

Vue3_2024_1天【Vue3创建和响应式,对比Vue2】

前言: Vue3对比Vue2版本,它在性能、功能、易用性和可维护性方面都有显著的提升和改进。 性能优化:模板编译器的优化、对Proxy的支持以及使用了更加高效的Virtual DOM算法等。这使得Vue3的打包大小减少了41%,初次渲染提速55%&#…

【MATLAB源码-第153期】基于matlab的OFDM系统插入导频和训练符号两种信道估计方式误码率对比仿真。

操作环境: MATLAB 2022a 1、算法描述 OFDM(Orthogonal Frequency Division Multiplexing,正交频分复用)是一种高效的无线信号传输技术,广泛应用于现代通信系统,如Wi-Fi、LTE和5G。OFDM通过将宽带信道划分…

使用docker方式测试部署django项目(客户催)

需求 1:已有django项目–weidanyewu 2:希望在服务器上测试部署–客户催 3:没完善django的启动 4:使用临时数据库进行演示 5:使用python3.10版本镜像 6:展示端口80 7:后台执行django程序 8&#…