SpringBoot 实现自动登录时的安全风险控制

SpringBoot实战:从零构建安全的Remember-Me自动登录 本文详细介绍了如何在SpringBoot项目中实现安全的Remember-Me自动登录功能。通过分析Remember-Me的核心价值、基础实现方案、Spring Security集成以及生产级最佳实践,帮助开发者构建既便捷又安全的自动登录系统。文章特别强调了安全加固策略和常见攻击防御方案,确保在提升用户体验的同时不降低系统安全性。 阅读详情

一、持久化令牌

1. 原理

要理解持久化令牌,一定要先搞明白自动登录的基本玩法: SpringBoot 配合 SpringSecurity 实现自动登录功能

持久化令牌就是在基本的自动登录功能基础上,又增加了新的校验参数,来提高系统的安全性,这一些都是由开发者在后台完成的,对于用户来说,登录体验和普通的自动登录体验是一样的。

在持久化令牌中,新增了两个经过 MD5 散列函数计算的校验参数,一个是 series,另一个是 token。其中,series 只有当用户在使用用户名/密码登录时,才会生成或者更新,而 token 只要有新的会话,就会重新生成,这样就可以避免一个用户同时在多端登录,就像手机 QQ ,一个手机上登录了,就会踢掉另外一个手机的登录,这样用户就会很容易发现账户是否泄漏(之前看到松哥交流群里有小伙伴在讨论如何禁止多端登录,其实就可以借鉴这里的思路)。

持久化令牌的具体处理类在 PersistentTokenBasedRememberMeServices 中,上篇文章我们讲到的自动化登录具体的处理类是在 TokenBasedRememberMeServices 中,它们有一个共同的父类:


而用来保存令牌的处理类则是 PersistentRememberMeToken,该类的定义也很简洁命令:

public class PersistentRememberMeToken {
 private final String username;
 private final String series;
 private final String tokenValue;
 private final Date date;
    //省略 getter
}

这里的 Date 表示上一次使用自动登录的时间。

2. 代码演示

接下来,我通过代码来给大家演示一下持久化令牌的具体用法。

首先我们需要一张表来记录令牌信息,这张表我们可以完全自定义,也可以使用系统默认提供的 JDBC 来操作,如果使用默认的 JDBC,即 JdbcTokenRepositoryImpl,我们可以来分析一下该类的定义:

public class JdbcTokenRepositoryImpl extends JdbcDaoSupport implements
  PersistentTokenRepository {
 public static final String CREATE_TABLE_SQL = "create table persistent_logins (username varchar(64) not null, series varchar(64) primary key, "
   + "token varchar(64) not null, last_used timestamp not null)";
 public static final String DEF_TOKEN_BY_SERIES_SQL = "select username,series,token,last_used from persistent_logins where series = ?";
 public static final String DEF_INSERT_TOKEN_SQL = "insert into persistent_logins (username, series, token, last_used) values(?,?,?,?)";
 public static final String DEF_UPDATE_TOKEN_SQL = "update persistent_logins set token = ?, last_used = ? where series = ?";
 public static final String DEF_REMOVE_USER_TOKENS_SQL = "delete from persistent_logins where username = ?";
}

根据这段 SQL 定义,我们就可以分析出

[漏洞分析]华夏ERP SpringBoot框架下的SaaS账号安全风险剖析 本文深入剖析了华夏ERP系统在SpringBoot框架下暴露的高危安全漏洞。该漏洞允许攻击者无需认证即可通过特定接口批量获取所有用户的账号和MD5加密密码,结合脆弱的密码存储机制,导致严重的账号密码泄露风险,对SaaS多租户业务构成严重威胁。文章提供了技术原理分析、影响评估及加固建议。 阅读详情

相关推荐

SpringBoot继承JWT token实现权限的验证(从头开始)

在开发后端接口时,数据的直接暴露可能会导致安全问题。为了应对这种情况,我们需要在访问接口时进行拦截验证,以确保只有经过身份验证的用户才能访问数据。为实现这一目的,我们需要编写一个拦截器,用于检查每次请求中是否携带有效的token(即身份验证令牌)。只有当用户携带有效token时,才能进行数据访问操作;否则,将对请求进行拦截并禁止访问敏感数据。通过编写拦截器实现身份验证,我们能够提高系统的安全性并保护数据免受未经授权的访问。这种做法有助于规避潜在的安全风险,有效保障系统的信息安全。

aabbbccc6788123的博客 2963

【python实战】怎么用python自动登录优快云

目录 先上效果 页面分析 引入selenium模块及驱动 1、并将安装好的Chromedriver.exe引入到代码中 2、浏览器驱动引入 爬虫模拟登录 1、设置网址链接 2、切换到账号密码登录 3、找到用户名密码的控件ID 4、注入用户名和密码 5、模拟登录点击 成功登录优快云 先上效果 页面分析 优快云登录页面如下图 引入selenium模块及驱动 1、并将安装好的Chromedriver.exe引入到代码中 # -*- coding:utf-8 -*-

信息安全领域优质创作者|操作系统领域专家 1万+

一篇文章带你使用 SpringBoot 实现自动登录时的安全风险控制

已经学习了: SpringBoot 配合 SpringSecurity 实现自动登录功能 知道了 Spring Boot 自动登录存在的一些安全风险,在实际应用中,我们肯定要把这些安全风险降到最低,今天就来和大家聊一聊如何降低安全风险的问题。 (1)持久化令牌方案 (2)二次校验 文章目录一、持久化令牌1. 原理2. 代码演示3. 测试4. 源码分析二、二次校验 一、持久化令牌 1. 原理 要理解持久化令牌,一定要先搞明白自动登录的基本玩法: SpringBoot 配合 SpringSecurity 实

南淮北安的博客 2876

单点登录功能实现

单点登录SSO实现

北执南念的博客 312

ABB机器人姿态与四元数(笔记)

通常使用机器人作业时,机器人的法兰轴(5轴)往往是垂直与作业平面的,此时需要将机器人的姿态调整(示教)到垂直于工作平面的状态,然后记录当前的姿态,作为之后作业的参考标准姿态。不同机器人表示控件姿态的方式不一样,但也无外乎3中:旋转矩阵、欧拉角和四元数。 ABB机器人使用的是四元数(可转欧拉角)作为机器人控件姿态的表示方式。这里主要是记录在不通过示教的方式下,如何定义四元数,使机器人达到垂直于工作平面的姿态。 5轴竖直向下(常用):此时,各轴角度为 [0,0,0,0,9...

Zythonista的博客 1万+

从零开始:用RFSOC XCZU47DR搭建软件无线电开发环境(2023最新版)

本文详细介绍了如何使用Xilinx RFSoC XCZU47DR搭建高性能软件无线电(SDR)开发环境,涵盖硬件选型、开发环境配置、射频子系统校准及实战应用开发。特别针对2023年最新技术需求,提供从基础配置到高级优化的完整指南,助力科研人员和工程师快速掌握RFSoC开发技术。

weixin_42525005的博客 513

Oracle GoldenGate (OGG) 实战:从安装到故障排查的完整避坑指南

本文提供了一份详尽的Oracle GoldenGate实战指南,涵盖从环境准备、核心进程配置到性能调优与故障排查的全过程。重点解析了OGG安装与部署中的常见陷阱,并分享了确保数据同步链路稳定运行的高级运维技巧与常见故障处理方法,帮助技术人员高效避坑。

weixin_29230649的博客 380

使用STM32制作简易数字时钟

连接LED数码管的电源和地线到STM32单片机的对应引脚,将数码管的A、B、C、D引脚连接到STM32单片机的I/O口引脚。通过编写和调试这个项目,可以熟悉STM32单片机的GPIO口和定时器的使用,以及数字显示的控制。步骤六:测试和调试 通过观察数码管的显示,可以验证时钟功能是否正常工作。步骤四:编写代码 在主程序中,我们将使用定时器中断来控制时钟的运行,并使用GPIO口控制LED数码管的显示。步骤五:编译和下载 编译代码并下载到STM32单片机中,通过调试器和串口监视器进行调试和查看输出结果。

qq_67153941的博客 1303

win11本地部署openclaw实操第5集-X11图形化界面搭建,让WSL2“看见”世界

本文介绍了在WSL2中实现图形界面(GUI)的方法。由于WSL2默认没有图形界面,需要使用X11服务器作为"翻译显示器",将Linux程序的图形指令渲染到Windows窗口中。推荐使用VcXsrv作为X11服务器,详细说明了其安装和配置步骤,包括选择"One large window"显示模式、禁用访问控制等关键设置。随后在Ubuntu中安装轻量级xfce4桌面环境,并通过设置DISPLAY环境变量将图形输出指向VcXsrv。最终通过startxfce4命令成功在Vc

weixin_44626085的博客 812

5G NR上行控制信道PUCCH

一、PUCCH概述 PUCCH用于承载上行控制信息,相比LTE,NR PUCCH支持5种不同的格式,按照时域上所占用的符号数量可以分为短格式和长格式两种,如下表所示,短格式占用1-2个符号,可以承载1-2bit信息,长格式占用4-14个符号,可承载大于2bit的信息。NR引入短格式PUCCH的目的是可以缩短HARQ-ACK反馈的时延,长格式仍然是考虑到持续时间长可以保证覆盖。 NR中,考虑到系...

一个关于5G NR的博客^^ 3万+

工业相机的检测原理课件(建议收藏)

本课件为各位工程师详细介绍了工业相机的视觉检测原理 ,旨在为工程师调试工业相机的视觉检测原理时提供理论性指导。

Bamboo265925的博客 500

深入理解 DDR5 Bank Group 与并行调度机制

Bank Group架构和并行调度机制,是DDR5性能跃升的核心秘密!理解它们才能写出高效调度程序,设计出性能强劲又稳定的DDR5系统。🎯记住:Bank Group不是简单的分组,而是高速并行的“魔法钥匙”,巧用它,你的DDR5设计将爆发惊人性能!

weixin_43199439的博客 318

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

上一篇: 我告诉你一个 AtomicInteger 的大秘密
下一篇: 「性能提升」扩展Spring Cache 支持多级缓存
JavaShark
博客等级 码龄4年 184粉丝 438原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值