在我们的WebLogic应用程序的一些调试期间,我注意到用户注销后JSESSIONID没有改变。
我试图了解这是否是我需要关注的事情。
此应用程序是WebLogic实例中运行的两个应用程序之一,我注意到它们共享相同的JSESSIONID。
This question参考以下内容:
SRV.7.3会话范围
HttpSession对象必须在应用程序(或servlet)上作用域 上下文)级别。底层机制,例如用于的cookie 建立会话,对于不同的上下文可以是相同的,但是 引用的对象,包括该对象中的属性,绝不能 由容器在上下文之间共享。
这表明最终由WegLogic决定如何管理这些JSESSIONID值,我不应该尝试从价值变化(或缺乏价值)来解释意义。
此外,我在应用程序上连接了HttpSessionListener
,我看到调用了sessionDestroyed
方法。
鉴于这两个元素,我认为JSESSIONID没有改变。然而,这与我习惯的行为不同,所以想验证我的假设。
JSESSIONID不会改变安全问题吗?
答案 0 :(得分:3)
不,它不应该是一个巨大的安全问题,因为与该会话实际关联的所有数据都将被丢弃。 JSESSIONID
只是该(现在不存在)数据的关键。
但是,如果您希望在每次注销/登录时更改JSESSIONID
,则可以实现注销功能,以便在用户注销时显式删除JSESSIONID
cookie。然后服务器将在下次请求时为他们分配一个全新的会话/ ID。
当然,正如文档中所述,如果您有多个上下文都碰巧依赖于单个JSESSIONID
cookie,那么将其从一个中删除将基本上将其全部删除,从而有效地将用户注销您服务器上的每个上下文。虽然在实践中,拥有多个面向用户的上下文并不是很常见,每个上下文都有自己的登录/会话状态。