资讯动态

04-会话管理详解

发布时间:2026/10/20 7:57:43 来源:尧图企业网站定制
Spring Security 会话管理详解一、知识概述会话管理是 Web 应用安全的重要组成部分,Spring Security 提供了完善的会话管理功能,包括会话创建、固定保护、并发控制、超时处理等。理解会话管理机制,对于构建安全可靠的 Web 应用至关重要。会话管理的核心概念:Session:服务端存储的用户状态Session ID:会话标识Session Fixation:会话固定攻击Concurrent Session:并发会话控制二、知识点详细讲解2.1 会话生命周期1. 用户访问应用 ↓ 2. 服务端创建 Session ↓ 3. 返回 Session ID(通过 Cookie) ↓ 4. 后续请求携带 Session ID ↓ 5. 服务端根据 Session ID 获取 Session ↓ 6. 用户登出或会话超时 ↓ 7. 销毁 Session2.2 会话管理策略策略说明always总是创建会话ifRequired需要时创建(默认)never不创建会话,但使用已有会话stateless完全无状态2.3 会话固定防护会话固定攻击原理:1. 攻击者获取 Session ID 2. 诱导用户使用该 Session ID 登录 3. 攻击者使用相同 Session ID 访问防护策略:none:不防护migrateSession:登录时创建新会话(默认)changeSessionId:只更改 Session ID2.4 并发会话控制控制同一用户的会话数量:最大会话数限制后登录踢出先登录先登录阻止后登录三、代码示例3.1 基础会话配置importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;importorg.springframework.security.config.annotation.web.builders.HttpSecurity;importorg.springframework.security.web.SecurityFilterChain;@Configuration@EnableWebSecuritypublicclassSessionConfig{@BeanpublicSecurityFilterChainfilterChain(HttpSecurityhttp)throwsException{http.sessionManagement(session-session// 会话创建策略.sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED)// 会话固定防护.sessionFixation(fixation-fixation.migrateSession())// 最大会话数.maximumSessions(1).maxSessionsPreventsLogin(false).expiredUrl("/login?expired"));returnhttp.build();}}3.2 会话创建策略@Configuration@EnableWebSecuritypublicclassSessionPolicyConfig{// 无状态应用(REST API)@BeanpublicSecurityFilterChainstatelessFilterChain(HttpSecurityhttp)throwsException{http.sessionManagement(session-session.sessionCreationPolicy(SessionCreationPolicy.STATELESS)).csrf(csrf-csrf.disable());returnhttp.build();}// 传统 Web 应用@BeanpublicSecurityFilterChainstatefulFilterChain(HttpSecurityhttp)throwsException{http.sessionManagement(session-session.sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED));returnhttp.build();}}3.3 会话固定防护importorg.springframework.context.annotation.Bean;importorg.springframework.security.config.annotation.web.builders.HttpSecurity;importorg.springframework.security.web.SecurityFilterChain;@ConfigurationpublicclassSessionFixationConfig{@BeanpublicSecurityFilterChainfilterChain(HttpSecurityhttp)throwsException{http.sessionManagement(session-session// 创建新会话(Servlet 3.1+ 推荐).sessionFixation(fixation-fixation.changeSessionId())// 或迁移会话(保留会话属性)// .sessionFixation(fixation - fixation// .migrateSession()// ));returnhttp.build();}}3.4 并发会话控制importorg.springframework.context.annotation.Bean;importorg.springframework.securit

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑