JWT漏洞

news2024/12/27 9:46:50

JWT介绍

1.1 JWT概念

JSON Web Token(JWT) 是一个开放标准。它定义了一种紧凑而独立的方法,用于在各方之间安全地将信息作为JSON对象传输。由于此信息是经过数字签名的,因此可以被验证和信任。可以使用secret(HMAC算法)或使用“RSA或ECDSA的公用/私有key pair密钥对”对JWT进行签名。

简单来说,JWT类似于身份令牌,只要JWT校验通过,即可验证身份。

1.2 JWT结构

在这里插入图片描述
JWT分为三部分,头部(Header),声明(Claims),签名(Signature),三个部分以英文句号.隔开。JWT的内容以Base64URL进行了编码。
在这里插入图片描述

  1. header 头部:指明签名时使用的算法参数,token类型。上面为HS256加密,JWT类型。
  2. pyaload 数据 也叫声明:表明该JWT字符串内携带了哪些进行
  3. signature 签名:给上面的头部和数据进行签名,其实就是加密,保证上面数据没有被篡改、没有被替换。服务器有一个不会发送给客户端的密码(secret),用头部中指定的算法对头部和声明的内容用此密码进行加密,生成的字符串就是JWT的签名。注意:签名本质就是加密,该字段会对头部和payload进行加密。上面加密过程为:HMACSHA256(base64UrlEncode(header) + “.” + base64UrlEncode(payload),secret)

总结

JWT其实就是对传输数据套了一层加密,保证数据没有被篡改和替换。没有密钥的情况下,直接修改数据时无效的,无法通过数据校验。
JWT其实是明文传输。JWT对传输的header、payload数据其实就是Base64加密,可直接解密。仅是加了签名字段,校验数据是否被更改,所以JWT一般不传输敏感数据。同时程序员没注意也存在敏感信息泄露。

2.漏洞利用

2.1思路

上述知道,JWT一般用于身份验证,但其实JWT的header和payload字段仅为base64编码,相当于明文。那如果后台验证时,并没检查签名字段,那可直接修改payload字段信息。
如果后台确实进行签名校验,但其实签名生成是通过header头中的加密算法和一段密文。如果知道密文,则可直接修改JWT数据。
如果不知道密文,那后端校验时存在2中情况:1. 后台提取header中的alg字段数据,再使用对应算法进行校验。2. 后台不提取header中的alg数据,直接默认使用指定的加密算法进行校验。
其实从代码逻辑中考虑,应该使用1的情况。这是就存在漏洞,header中的alg字段可设置为none,表明不使用加密算法,此时签名就为空。而header数据和payload数据直接base64加密即可。如果是2情况,那只有暴力破解密文,由于签名算法是已知的,加密数据除了secret之外也是已知的,只需要有密文字典,进行爆破即可。
注意:base6 4后其实还要适应URL,将base64的等号= 删掉即可。

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

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

相关文章

SwinTransformer细节总结

SwinTransformer可以看成是披着ResNet外壳的vision transformer,swin 就是两个关键词:patch 多尺度。下面结合code来说一些重点的细节: 总览图 这里W-MSA缩写是window-multi head self attention,SW-MSA缩写是shifted window-mu…

JDK 8到JDK 17都有哪些吸引人的特性?

从JDK 8到JDK 17,Java语言和平台经历了许多变化和改进,引入了许多吸引人的新特性和功能。在这里,给大家列举一些我认为最有趣或最有用的新特性,并会以实际使用案例为大家展示新用法。希望大家多多点赞关注!&#xff01…

C语言的switch case函数

文章目录 1 函数结构2 执行过程3 break关键字4 补充说明参考 1 函数结构 switch 是另外一种选择结构的语句,用来代替简单的、拥有多个分枝的 if else 语句,基本格式如下: switch(表达式){ case 整型数值1: 语句 1; case 整型数值2: 语句 2; …

极致呈现系列之:Echarts词云图的数据共振

目录 什么是词云图词云图的特性及应用场景词云图的特性词云图的应用场景 Echarts中词云图的常用属性vue3中创建词云图 什么是词云图 词云图(Word Cloud)是一种以文字的形式展示数据的可视化图表。它通过将各个文字按照一定的规则排列,并根据…

车载软件架构 —— 闲聊几句AUTOSAR OS(六)

我是穿拖鞋的汉子,魔都中坚持长期主义的工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 没有人关注你。也无需有人关注你。你必须承认自己的价值,你不能站在他人的角度来反对自己。人生在世,最怕的就是把别人的眼光当成自己生活的唯一标准。到最…

centos版本的EDA虚拟机搭建2

这次教程主要介绍centos的必备软件的安装。 0、参考博客 1、VMware下CentOS 7虚拟机的安装 2、搭建属于自己的数字IC EDA环境(二):搭建Centos的基本使用环境和工具 3、cenos7基本配置 1、git安装 sudo yum install -y git2、gvim安装 su…

从大型语言模型LLM走向人工通用智能AGI的改进方向(public)

从大型语言模型走向人工通用智能AGI 返回论文和资料目录 1.导读 这篇博客主要基于《Sparks of Artificial General Intelligence: Early experiments with GPT-4》文中第9和第10节、以及我自己对当前LLM和AGI的理解。给出大型语言模型走向AGI时 改进的方向。 2.14个问题及改…

详解:阿里邮箱_阿里企业邮箱_阿里邮箱企业版

阿里邮箱是阿里云自主研发的,基于飞天平台自主研发的云原生分布式邮箱系统,阿里邮箱提供免费版、标准版、尊享版和集团版,企业邮箱版本不同支持的账号数也不同,共享网盘容量和个人网盘容量均不同,阿里云百科来详细介绍…

工厂方法模式(Factory Method)

别名 虚拟构造函数(Virtual Constructor)。 定义 工厂方法是一种创建型设计模式,其在父类中提供一个创建对象的方法,允许子类决定实例化对象的类型。 前言 1. 问题 假设你正在开发一款物流管理应用。最初版本只能处理卡车运…

【85 backtrader-cs因子测试的一些高级技巧-2】使用cython、c语言和c++加速某些函数的计算

在上一篇文章:【85 backtrader-cs因子测试的一些高级技巧】使用numba加速某些函数的计算中,使用了numba改进某些函数,实现加速,在这一篇文章中,尝试接着上一篇文章的主题,继续尝试用cython,c语言和c++尝试改进decayliear函数的计算速度。 结论: 从图上似乎可以得到下面…

Java程序性能优化技巧

1、慎用异常 在Java软件开发中,经常使用 try-catch 进行错误捕获,但是,try-catch 语句对系统性能而言是非常糟糕的。虽然在一次 try-catch中,无法察觉到它对性能带来的损失,但是,一旦try-catch被应用于循环…

从零开始 verilog 以太网交换机(五)帧合路单元的设计与实现

从零开始 verilog 以太网交换机(五)帧合路单元的设计与实现 🔈声明: 😃博主主页:王_嘻嘻的CSDN主页 🧨 从零开始 verilog 以太网交换机系列专栏:点击这里 🔑未经作者允许…

07-歌词滚动效果

现在学习的代码工作中不一定会需要,如果有,也已经做成了产品和库, 前端重点是创造,面试官考验你的能力是会提出最刁钻的问题给你的。 项目效果 原生JS效率是最高的,框架只是提高代码的可读性 favico图标添加 两种方…

一个工具类让你彻底解决bean深拷贝

深拷贝是我们在代码开发当中经常需要使用到的,但是市面上的对象拷贝方法,比如spring自带的,或者其他工具类带的对象拷贝,大部分都是浅拷贝,根本无法满足咱们的业务需求,我们就只能对里面的引用对象进行专门…

guacamole 纯web rdp预研:web应用程序部分

文章目录 web rdp预研 web应用程序部分预研目的相关基础Web应用结构(框架)配置tomcat运行web项目与前端交互原理问题整理Java web基础知识Java web调试预研结论 web rdp预研 web应用程序部分 ⭐️来自很多年前的笔记,只是一个归档&#xff0…

面向对象【成员变量与局部变量、方法声明与作用】

文章目录 成员变量局部变量成员变量与局部变量的区别 方法方法的作用方法的声明 成员变量 Java中的成员变量是指类中声明的变量,也称为实例变量或属性。它们与方法一样属于类的成员,不同之处在于,它们存储在对象(堆)中而不是栈中,…

基于灰色预测模型的负荷预测(matlab程序)

0.代码链接 基于灰色预测模型的负荷预测(matlab程序)资源-CSDN文库 1.简述 灰色预测是一种对含有不确定因素的系统进行预测的方法。灰色预测通过鉴别系统因素之间发展趋势的相异程度,即进行关联分析,并对原始数据进行生成处理来…

python:并发编程(二十六)

前言 本文将和大家一起探讨python并发编程的实际项目:win图形界面应用(篇八,共八篇),系列文章将会从零开始构建项目,并逐渐完善项目,最终将项目打造成适用于高并发场景的应用。 本文为python并…

ADAS(高级驾驶员辅助系统)

什么是 ADAS ADAS —— 高级驾驶员辅助系统,包含一系列硬件和软件组件,自动起到驾驶员的多项作用。目前,常见的车辆 ADAS 功能包括自适应巡航控制、盲点检测、变道检测(车道偏离警告系统)、自动车道跟随和自动紧急制动、泊车。 L0到L2称为AD…

测试用例详解(强,硬,牛)

目录: 测试用例价值与体系黑盒测试方法论-等价类黑盒测试方法论-边界值黑盒测试方法论-因果图黑盒测试方法论-判定表黑盒测试方法论-场景法测试用例基础概念测试用例设计与评审面试测试测试用例设计搜索功能测试用例设计 1.测试用例价值与体系 测试用例概念测试…