我正在尝试为我的项目实施安全性以防止会话固定。
由于我无法访问处理整个会话创建和验证的组件(来自某个库的过滤器,我们称之为 MagicFilter),因此我试图找出另一种可能的方法。
现在,为我的会话考虑这个场景:
- 用户请求登录页面
- MagicFilter 使用 JSESSIONID 等设置 cookie
- 其他过滤器做一些工作......
- Java Spring MVC,所以作为用户看到 LoginView 之前的最后一步,我可以访问我的 LoginController 中的内容。在我返回视图之前,我在这里 .invalidate() 会话。
因此,基本上用户在登录页面时永远不会拥有真实有效的会话 ID。只有在他登录后,MagicFilter 才会分配另一个会话 ID,然后将其保留,因为我只在我的 LoginController 中无效()会话 ID。
但这感觉很粗糙,我不得不“破解”MagicFilter的自动过程。任何人都可以看看这在会话固定方面是否应该是安全的?