首页 > 其他分享 >JWT 前端笔记

JWT 前端笔记

时间:2024-04-15 17:12:04浏览次数:30  
标签:加密 笔记 前端 JWT 信息 header 签名 服务器

JWT

JTW全称Json Web Token

image-20240415152514822

没有JWT的时候,服务端给客户端发送信息,客户端返回信息,通常存在cookie或localstorage,不过服务器无法信任这个信息

image-20240415152555335 image-20240415152617847

传给服务器的信息可能是被篡改的,也可能是被伪造的

JWT的雏形

原始信息和密钥一样的情况下才能生成相同签名

info.签名返回后,服务器用相同的算法(比如sha256算法)和密钥重新签名,去对比新的签名和旧的签名是否一样,一样则表示信息没有被篡改

没有 JWT 的时候用cookie+session

image-20240409172044292

JWT由3个部分组成,每个部分由.来进行分割

header就是一个 JSON 格式的字符串(指定算法和类型),进行base64编码之后形成一个header

image-20240415153637963

同时可以被轻松解码

image-20240415153727852

第二部分是payload也就是信息主题,里面包含我们要颁发的身份信息

比如用户的ID,用户的账号,还能指定 JWT 整个的过期时间,同样也不是加密的

image-20240409172311037

headerpayload(负荷)用 .连接后用密钥进行签名,再对签名用base64,就得到了第三个部分signature(这就是签名的部分)

image-20240409172411461

因为这些信息可以保存在客户端了,服务器的压力就小了,过去服务器还要建立session表

JWT的优点

  • 紧凑:JWT可以通过URL, POST参数或者在HTTP头内发送,因为数据量小,传输快捷。
  • 自包含:JWT包含了所有用户需要的信息,避免了多次数据库查询。自包含的含义是指这个令牌本身包括了所有验证和识别用户身份所需的信息,而不需要额外查询数据库或调用其他服务。
  • 跨语言支持:JWT支持的编码和加密技术在各种编程语言中都有广泛支持。

JWT的缺点

  • 存储安全:由于JWT本质上是自包含的,一旦泄漏就可能被任意使用,直到过期。
  • 默认不加密:JWT的基本实现没有加密数据,任何人都可以读取payload的内容,除非使用对称或非对称加密方法对其进行加密。

问:jwt的token如何避免不被盗用

  1. 使用HTTPS
  2. 短的过期时间
  3. refresh token
  4. 在浏览器可用使用HttpOnly和Secure属性的Cookie存储 JWT

标签:加密,笔记,前端,JWT,信息,header,签名,服务器
From: https://www.cnblogs.com/goicandoit/p/18136482

相关文章

  • 算法相关读书笔记
    由于算法导论中涉及大量数学公式,在腾讯文档才能友好的展示,因此下面分享的为腾讯文档的链接个人能力有限,可能有的理解是错误的,请谅解,仅供分享和参考【腾讯文档】算法导论1~3部分【腾讯文档】算法导论第4~5部分【腾讯文档】算法导论第6部分22~24章【腾讯文档】算法导论第6部分2......
  • Java并发编程实战读书笔记
    1.线程池模型    netty实战中讲到的线程池模型可以描述为:1.从线程池中选择一个空间的线程去执行任务,2.任务完成时,把线程归还给线程池。这个模型与连接池类似。    根据jdk源码的研究,具体的实现模型是,线程池ThreadPoolExecutor中有一个静态内部类Worker,使用装饰器模式扩......
  • Min_25 筛学习笔记
    MyBlogs杜教筛是一种能在\(\mathcalO(n^{\frac23})\)的时间复杂度内求积性函数前缀和的筛法。虽然复杂度比较优秀,但是被筛的积性函数需要满足特殊性质。Min_25筛由Min_25发明,相对更通用,其时间复杂度为\(\mathcalO(\frac{n^{\frac34}}{\logn})\)。首先构造一个完......
  • 前端面试题 — webpack
    1.webpack的安装和使用方式安装Node.js和npm首先,确保你的计算机上安装了Node.js和npm(Node包管理器),因为Webpack是通过npm进行安装和管理的。创建项目目录并初始化npmnpminit-y安装Webpacknpminstallwebpackwebpack-cli......
  • ROS笔记[1]-搭建Gazebo仿真环境
    摘要在阿里无影云电脑Ubuntu20.04上搭建ROS1-Noetic环境及Gazebo环境;搭建XTDrone仿真环境.关键信息系统:Ubuntu20.04ROS1版本:NoeticGazebo版本:9原理简介阿里无影云电脑[https://www.aliyun.com/product/ecs][https://wuying.aliyun.com/]无影云电脑(WUYINGWorkspac......
  • 「二分图」笔记
    二分图同时满足不存在奇数环和染色法不矛盾。二分图的判定:染色法#include<bits/stdc++.h>usingnamespacestd;constintN=1e3+10,M=2e6+10;struct{ intto,next;}e[M];inttop,h[N],color[N],n,m;voidadd(intx,inty){ e[++top]={y,h[x]};......
  • 「树链剖分」 学习笔记
    一,树链剖分的思想与概述正如其名,树链剖分用于将树剖分成若干条链的形式,以维护树上路径的信息,其中剖分出的链有多种形式,最常见的是重链,还有长链或更多其它的链。其中剖分出的链为重链时,就引出了下文的主角「重链剖分」。重链剖分能保证划分出的每条重链上的节点DFS序连续,因此......
  • 若依解决VUE前端时间显示问题
    参考:https://blog.csdn.net/qq_43544074/article/details/119139313#:~:text=%E6%97%A0%E6%B3%95%E6%AD%A3%E7%A1%AE%E7%9A%84%E6%98%BE%E7%A4%BA%E6%97%B6%E9%97%B4%E3%80%82%20%E8%A7%A3%E5%86%B3%E5%A6%82%E4%B8%8B%EF%BC%9A%201%E3%80%81%E5%9C%A8%E5%90%8E%E7%AB%AF%E4%BB......
  • day06_我的Java学习笔记 (综合应用专题课)
    专题课(综合案例)案例一:买飞机票案例二:找素数上述老师代码有点问题,即:j<i/2;应为j<=i/2;见如下判断:其实出问题的点,只会在i=4时,因为当i=4时,j<i/2:不成立,直接跳过该循环,执行步骤3的操作了。(当范围不是101-200,而是包含了4,则会出现上述的现象,因4不满......
  • day04_我的Java学习笔记 (数组的静态初始化、数组的动态初始化,debug调试等)
    1.数组1.1数组的定义那python怎么定义数组的呢?Java:String[]names={"zhangsan","lisi","wangwu"}Python:names=["zhangsan","lisi","wangwu"]在python中,列表可以存储不同类型的数据,而在Java中,数组只能存储相同类型的数据。1......