用户注销后JSessionID不会更改 - 这是安全问题吗?

时间:2012-04-10 01:27:40

标签: java security servlets weblogic

在我们的WebLogic应用程序的一些调试期间,我注意到用户注销后JSESSIONID没有改变。

我试图了解这是否是我需要关注的事情。

此应用程序是WebLogic实例中运行的两个应用程序之一,我注意到它们共享相同的JSESSIONID。

This question参考以下内容:

  

SRV.7.3会话范围

     

HttpSession对象必须在应用程序(或servlet)上作用域   上下文)级别。底层机制,例如用于的cookie   建立会话,对于不同的上下文可以是相同的,但是   引用的对象,包括该对象中的属性,绝不能   由容器在上下文之间共享。

这表明最终由WegLogic决定如何管理这些JSESSIONID值,我不应该尝试从价值变化(或缺乏价值)来解释意义。

此外,我在应用程序上连接了HttpSessionListener,我看到调用了sessionDestroyed方法。

鉴于这两个元素,我认为JSESSIONID没有改变。然而,这与我习惯的行为不同,所以想验证我的假设。

JSESSIONID不会改变安全问题吗?

1 个答案:

答案 0 :(得分:3)

不,它不应该是一个巨大的安全问题,因为与该会话实际关联的所有数据都将被丢弃。 JSESSIONID只是该(现在不存在)数据的关键。

但是,如果您希望在每次注销/登录时更改JSESSIONID,则可以实现注销功能,以便在用户注销时显式删除JSESSIONID cookie。然后服务器将在下次请求时为他们分配一个全新的会话/ ID。

当然,正如文档中所述,如果您有多个上下文都碰巧依赖于单个JSESSIONID cookie,那么将其从一个中删除将基本上将其全部删除,从而有效地将用户注销您服务器上的每个上下文。虽然在实践中,拥有多个面向用户的上下文并不是很常见,每个上下文都有自己的登录/会话状态。