Shiro用户登陆后会话标识未更新漏洞

前言

这是我在以前遇到的问题了, 当时做的是政府项目, 对Web安全要求比较高.
使用Shiro的项目被安全准入检测出用户登陆后会话标识未更新漏洞.
意思是登录前的Session和登录后的Session一样。

官方修复无望, 自己打补丁

2010-05-24提出的SHIRO-170, 至今2019-03-27仍然未解决.
看来修复无望了, 但是勤劳的人民给出了临时性的解决方案.
那就是在登录时, 先销毁session, 再login.
主要步骤如下:

  1. 获取session, 保存session中的属性Map
  2. session.stop()销毁
  3. 进行登录subject.login(token)
  4. 将之前保存的属性Map, 重新注入新的session

具体代码可以查看我的个人代码库LoginController.java#L91-L113

参考资料