中危漏洞-会话标识固定修复

本文详细介绍了会话标识固定这一中危安全漏洞,讨论其危害性,包括攻击者如何利用此漏洞。修复背景聚焦于SSM(Spring、Struts、MyBatis)中的Shiro框架,解释了由于会话ID未随登录改变导致的问题。解决方案是通过重写Shiro的FormAuthenticationFilter,实现动态会话ID,确保登录前后session ID不同,增强系统安全性。然而,仅修复此漏洞并不能抵御所有黑客攻击,系统整体安全性仍需重视。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.先说会话标识固定是什么以及危害性

这个漏洞是指在用户进入登录页面,但还未登录时,即产生了一个 session,用户登录后,session 的id 未改变。即系统在登录后没有建立新 session,原来的 session 也没有被销毁。攻击者事先访问系统并建立一个会话,诱使受害者使用此会话登录系统,然后攻击者再使用该会话访问系统即可登录受害者的账户。也就是说登录前和登录后共用的是一个session ID,即使对方没有你的账号密码,但只要提前登录并获取一个session ID,再让拥有账号密码的用户去使用这个已经产生了session ID的登录页,那么就相当于间接的有了登录权限,访问你的系统。

2.漏洞修复背景

所修复的漏洞,涉及的是ssm中shiro框架的登录生成的session id问题,在漏洞修复前,可以观察下自己系统登录的session id信息。

因servelet容器分配的session名为JSESSIONID,若不指定shiro本身的session ID,可能带来的问题有:与SERVLET容器名冲突, 如JETTY, TOMCAT 等默认JSESSIONID,当跳出SHIRO SERVLET时如ERROR-PAGE容器会为JSESSIONID重新分配值导致登录会话丢失!

故而本系统shiro生成的session 叫做MASSESSIONID,防止和servelet的冲突。

本系统在修复前,登录时shiro产生的 session id 在登录前和登录后值是固定不变的,也就是会话标识固定。
在这里插入图片描述

3.修复

系统使用shiro框架的,一般都会继承shiro中的FormAuthenticationFilter类,重写里面的一些方法,进行登录前后的一些信息验证或者过滤,该修复手段即重写shiro生成session的方法,将固定session改为动态session。

@Component
public class FormAuthFilter extends FormAuthenticationFilter {
   
   
@Override
	protected boolean executeLogin(ServletRequest request, ServletResponse response) throws Exception {
   
   
		AuthenticationToken token = createToken
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值