[BT]小迪安全2023学习笔记(第21天:Web攻防-JWT)

2024-03-10 01:12

本文主要是介绍[BT]小迪安全2023学习笔记(第21天:Web攻防-JWT),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

第21天

JSON Web Token(JWT)

JWT是一种紧凑且自包含的方式,用于在网络上安全地传输信息作为JSON对象。这些信息可以被验证和信任,因为它们是数字签名的。JWT通常用于身份验证和信息交换,下面是一个简化的JWT示例:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvZSBCbG9nZ3MiLCJpYXQiOjE1MTYyMzkwMjJ9.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

这个示例可以分为三个部分,由两个点(.)分隔:

  1. Header(头部): 描述JWT的元数据,比如使用的算法(例如:HS256)。

    eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
    

    解码后的内容是:

    {"alg": "HS256","typ": "JWT"
    }
    
  2. Payload(载荷): 包含所要传递的数据,它可以包含多个预定义的声明或我们添加的自定义声明。

    eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvZSBCbG9nZ3MiLCJpYXQiOjE1MTYyMzkwMjJ9
    

    解码后的内容是:

    {"sub": "1234567890","name": "Joe Blogs","iat": 1516239022
    }
    
  3. Signature(签名): 通过将前两部分的编码字符串用密钥进行签名生成,以验证消息的发送者和确保消息在传输过程中未被篡改。

    SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
    

生成JWT的过程包括对header和payload进行Base64编码,然后使用header中指定的算法和密钥对它们进行签名。JWT的这种结构使得它在Web环境中特别有用,可以在客户端和服务器之间轻松安全地传递信息。

第一种攻击方式

如果将alg设置为None,即为对数据不进行加密,因此数据极有可能被攻击者随意篡改。但如果JWT采用了加密算法,那么修改数据之后会因为加密的原因无效

第二种攻击方式

由于一般情况下JWT都会采用加密,因此还可以通过爆破的方式获得密钥,密钥位于Signature部分,如果获得了密钥,那么再修改数据就会有效

第三种攻击方式

有的时候密钥不是固定的写在代码里,而是通过KID设置的路径名读取密钥文件,而这个时候可以通过设置KID的值读取其他文件或者执行命令

不安全的第三方组件

在搭建网站时可能会用到第三方组件或库,而如果攻击者知道了这些组件的漏洞那么就可以利用起来攻击网站,比如log4j

这篇关于[BT]小迪安全2023学习笔记(第21天:Web攻防-JWT)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/792531

相关文章

JAVA保证HashMap线程安全的几种方式

《JAVA保证HashMap线程安全的几种方式》HashMap是线程不安全的,这意味着如果多个线程并发地访问和修改同一个HashMap实例,可能会导致数据不一致和其他线程安全问题,本文主要介绍了JAV... 目录1. 使用 Collections.synchronizedMap2. 使用 Concurren

Spring Security+JWT如何实现前后端分离权限控制

《SpringSecurity+JWT如何实现前后端分离权限控制》本篇将手把手教你用SpringSecurity+JWT搭建一套完整的登录认证与权限控制体系,具有很好的参考价值,希望对大家... 目录Spring Security+JWT实现前后端分离权限控制实战一、为什么要用 JWT?二、JWT 基本结构

java解析jwt中的payload的用法

《java解析jwt中的payload的用法》:本文主要介绍java解析jwt中的payload的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java解析jwt中的payload1. 使用 jjwt 库步骤 1:添加依赖步骤 2:解析 JWT2. 使用 N

SpringSecurity JWT基于令牌的无状态认证实现

《SpringSecurityJWT基于令牌的无状态认证实现》SpringSecurity中实现基于JWT的无状态认证是一种常见的做法,本文就来介绍一下SpringSecurityJWT基于令牌的无... 目录引言一、JWT基本原理与结构二、Spring Security JWT依赖配置三、JWT令牌生成与

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

Python从零打造高安全密码管理器

《Python从零打造高安全密码管理器》在数字化时代,每人平均需要管理近百个账号密码,本文将带大家深入剖析一个基于Python的高安全性密码管理器实现方案,感兴趣的小伙伴可以参考一下... 目录一、前言:为什么我们需要专属密码管理器二、系统架构设计2.1 安全加密体系2.2 密码强度策略三、核心功能实现详解

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

springboot security使用jwt认证方式

《springbootsecurity使用jwt认证方式》:本文主要介绍springbootsecurity使用jwt认证方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录前言代码示例依赖定义mapper定义用户信息的实体beansecurity相关的类提供登录接口测试提供一

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

最新Spring Security实战教程之Spring Security安全框架指南

《最新SpringSecurity实战教程之SpringSecurity安全框架指南》SpringSecurity是Spring生态系统中的核心组件,提供认证、授权和防护机制,以保护应用免受各种安... 目录前言什么是Spring Security?同类框架对比Spring Security典型应用场景传统