1.会话固定攻击
会话固定攻击(session fixation attack)是利用应用系统在服务器的会话ID固定不变机制,借助他人用相同的会话ID获取认证和授权,然后利用该会话ID劫持他人的会话以成功冒充他人,造成会话固定攻击。
整个攻击流程是:
-
1、攻击者Attacker能正常访问该应用网站;
-
2、应用网站服务器返回一个会话ID给他;
-
3、攻击者Attacker用该会话ID构造一个该网站链接发给受害者Victim;
-
4-5、受害者Victim点击该链接,携带攻击者的会话ID和用户名密码正常登录了该网站,会话成功建立;
-
6、攻击者Attacker用该会话ID成功冒充并劫持了受害者Victim的会话。
2.防御会话固定攻击
防御固定攻击非常简单只需要在用户登录之后重新生成新的session就行。
在spring security中,使用sessionManagement(会话管理的配置器)来防御会话固定攻击,其防御策略有四种
- none: 不做任何变动,登录过后仍然使用旧的session
- newSession:登录之后创建一个新的session
- migrateSession: 登录之后创建一个session,并将旧的session的数据复制到新的session里面 ---->默认
- changeSessionId:不创建新的会话,而是使用由servlet容器提供的会话固定保护
http.authorizeRequests()
.antMatchers("/api/**").permitAll()
.antMatchers("/controller/**").authenticated()
.anyRequest(