【问题标题】:what are the real effects to change JSESSIONID?更改 JSESSIONID 的真正效果是什么?
【发布时间】:2016-05-23 20:41:17
【问题描述】:

我正在使用 Spring Security 开发一个 Java 应用程序。

我想避免会话固定,但在文档中找到的会话固定解决方案似乎没有按预期工作...here

所以,我在登录时这样做了

final HttpSession session = request.getSession(false);
        if (session != null && !session.isNew()) {
            session.invalidate();
        }

效果很好,每次调用登录页面时都会更改 JSESSIONID...

但是一旦我登录后,我可以再次调用登录页面,获取另一个 JSESSIONID 并且仍然处于登录状态,我只需单击返回按钮并返回登录用户区域。

它确实改变了 JSESSIONID,我的问题是,它不应该有更大的影响吗?比如使我的会话无效或注销我?

当我调用注销表单时,它确实会注销用户并按预期工作,我只是想知道更改 JSESSIONID 是否有实际效果或无关紧要。

有什么想法吗?

我正在使用安全 3.2

【问题讨论】:

  • Spring 安全does that automatically。你想在这里实现什么?恕我直言,但您似乎不具备实现安全性所需的知识,因此谨慎地依赖经过尝试和测试的代码。
  • 您好,在我的应用程序中它不会自动完成,我尝试实现它但可能做得不好,知道怎么做吗?

标签: java spring session spring-security


【解决方案1】:

spring 的session 映射到JSESSIONID。因此,如果客户拥有会话状态 bean,则在更改 JSESSIONID 后它们将丢失。 即使文档告诉

Spring Security 通过创建一个新的来自动防止这种情况发生 用户登录时的会话

你可以通过添加这个来明确设置会话固定的配置

<security:session-management session-authentication-strategy-ref="fixation" />

并使用SessionFixationProtectionStrategy 类定义fixation bean

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-18
    • 2016-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    • 2010-12-05
    相关资源
    最近更新 更多