首页 > 其他分享 >JWT - 防止令牌被非法获取后用于非法操作 和 踢出未过期的用户

JWT - 防止令牌被非法获取后用于非法操作 和 踢出未过期的用户

时间:2024-12-02 22:05:17浏览次数:11  
标签:令牌 JWT Redis 用户 刷新 非法操作 ID

防止非法注入和提高安全性(两种主要措施)

  1. 设置过期时间:为每个JWT设置一个合理的过期时间(exp 声明),这样即使令牌被泄露,它的有效性也是有限的。

  2. 使用刷新令牌:为了减少主令牌泄露的风险,可以实现一个短期有效的访问令牌和长期有效的刷新令牌系统。访问令牌用于日常请求,而刷新令牌则用于获取新的访问令牌。

踢出尚未过期的用户

  • 黑名单机制:当需要立即注销某个用户的会话时,可以将该用户的JWT添加到黑名单数据库中。服务器在验证每个请求之前,都会检查该令牌是否存在于黑名单中,如果存在,则拒绝请求并可能返回一个错误消息提示用户重新登录。

  • 刷新令牌撤销:如果实现了刷新令牌机制,可以在用户被踢出时撤销其刷新令牌。这将阻止用户获取新的访问令牌,从而有效地结束他们的会话。

  • Redis中存储token,实现步骤如下:

    • 1.生成Token时记录:当用户成功登录或刷新令牌时,除了生成新的JWT外,还将该JWT与用户的ID关联起来存储在Redis中。例如,可以使用用户的ID作为键,JWT作为值。

    • 2.请求拦截:在每次处理涉及认证的请求前,先解析请求中的JWT,从JWT中提取用户ID。

    • 3.查询Redis:使用从JWT中提取的用户ID作为键,查询Redis中存储的对应JWT。

    • 4.比较JWT:将请求中的JWT与Redis中存储的JWT进行比较。如果两者匹配,则认为该请求合法,允许继续处理;如果不匹配或Redis中不存在该用户ID对应的JWT,说明用户已被踢出或存在其他异常情况,应拒绝请求并提示用户重新登录。

标签:令牌,JWT,Redis,用户,刷新,非法操作,ID
From: https://blog.csdn.net/wy02_/article/details/144199471

相关文章

  • 如何通过 JWT 来解决登录认证问题
    1.问题引入在登录功能的实现中传统思路:登录页面时把用户名和密码提交给服务器服务器验证用户名和密码,并把检验结果返回给后端如果密码正确,则在服务器端创建session,通过cookie把sessionid返回给浏览器但是正常情况下一个web应用是部署到多个服务器上的,通过Nginx......
  • JWT认证相关解读,以及开源项目中认证默认密钥未修改造成的登录认证绕过
    今天研究发现一个token的复用漏洞,涉及到JWT认证,为什么会出现这样的代码问题,我花了点时间看了下github开源项目,找到了原因。JWT认证原理JWT的使用场景JWT是一种认证技术,类似于cookie,但是JWT令牌是存储在客户端,也就是我们的浏览器中,服务端只对我们发送请求携带的token进行检......
  • Java JWT:原理、机制及案例示范
    一、什么是JWT?1.1JWT的基本概念JWT(JSONWebToken)是一种用于在各方之间传递JSON格式信息的紧凑、URL安全的令牌(Token)。JWT的主要作用是验证用户身份或权限。它由三部分组成:Header(头部):标识令牌的类型和加密算法。Payload(载荷):包含了实际的身份信息及其他数据。Signature(签......
  • JWT(JSON Web Token)、Token、Session和Cookie
    JWT(JSONWebToken)、Token、Session和Cookie都是Web开发中常用的概念,它们各自在不同的场景下发挥着重要的作用。以下是对这四个概念的详细解释和比较:一、JWT(JSONWebToken)定义:JWT是一个紧凑的、自包含的用于双方之间安全传输信息的JSON对象。它通过将Token划分为头部(Header......
  • 获取和解析JWT令牌
    一、JWT令牌介绍JWT(JSONWebTokens)是一种开放标准(RFC7519),它定义了一种紧凑且自包含的方式,用于在各方之间以JSON对象的形式安全地传输信息。每个JWT令牌由三部分组成:Header(头部)、Payload(负载)和Signature(签名),它们之间用点(.)分隔。1.Header(头部):通常包含两部分:令牌的类型(即JWT)和......
  • JWT 令牌生成报错
    一、问题描述我在获取JWT令牌时,报了一个这样的错误error:io.jsonwebtoken.security.WeakKeyException:Thesigningkey'ssizeis64bitswhichisnotsecureenoughfortheHS256algorithm.二、问题原因原因是我这里指定的签名密钥也就是signingKey,也就是‘cehgnxuyu......
  • 从0到1搭建权限管理系统系列三 .net8 JWT创建Token并使用
    说明  该文章是属于OverallAuth2.0系列文章,每周更新一篇该系列文章(从0到1完成系统开发)。   该系统文章,我会尽量说的非常详细,做到不管新手、老手都能看懂。   说明:OverallAuth2.0是一个简单、易懂、功能强大的权限+可视化流程管理系统。结合上一篇文章使用,味道更......
  • 网关鉴权之JWT
    网关的鉴权是保障系统安全的重要环节,它涉及在请求到达系统之前对请求进行身份验证和授权的过程。以下是对网关鉴权的详细介绍:一、网关鉴权的基本概念1.定义:网关鉴权是指在请求到达系统之前,通过网关对请求进行身份验证和授权的过程。这包括验证请求的发起者身份是否合......
  • Token令牌机制
    为每个请求生成一个唯一的Token,并在服务端进行校验,一旦处理了对应的请求,就丢弃该Token,避免重复处理。具体步骤:1、服务端提供了发送token的接口。我们在分析业务的时候,哪些业务是存在幂等问题的,就必须在执行业务前,先去获取token,服务器会把token保存到redis中。2、然后调用业......
  • 限流-令牌桶算法
    importjava.util.concurrent.TimeUnit;importjava.util.concurrent.atomic.AtomicInteger;/***限流器*/publicclassRateLimiter{/***时间窗口,单位毫秒*/privatefinallongtimeWindow;/***窗口时间内最大请求数*/pr......