改变JSESSIONID的真正效果是什么?

时间:2016-02-12 16:01:57

标签: java spring session spring-security

我正在使用spring security处理java应用程序。

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

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

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

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

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

它确实改变了JSESSIONID,我的问题是,它不应该有更大的影响吗?喜欢使我的会话无效或登出我?

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

任何想法?

我正在使用安全3.2

1 个答案:

答案 0 :(得分:0)

spring's %timeit array.array('I').read(open('/dev/urandom', 'rb'), 10**6) 1 loop, best of 3: 200 ms per loop is mapped to session. so if a customer would have session state beans, they would be lost after changing JSESSIONID. even though documentation tells

Spring Security protects against this automatically by creating a new session when a user logs in

you can explicitly set configuration for session fixation by adding this

JSESSIONID

and defining <security:session-management session-authentication-strategy-ref="fixation" /> bean with fixation class