在我们的 WebLogic 应用程序的一些调试过程中,我注意到 JSESSIONID 在用户注销后没有改变。
我想了解这是否是我需要关注的事情。
此应用程序是在 WebLogic 实例中运行的两个应用程序之一,我注意到它们都共享相同的 JSESSIONID。
This question引用了以下内容:
SRV.7.3 Session Scope
HttpSession objects must be scoped at the application (or servlet context) level. The underlying mechanism, such as the cookie used to establish the session, can be the same for different contexts, but the object referenced, including the attributes in that object, must never be shared between contexts by the container.
这表明最终由 WegLogic 选择如何管理这些 JSESSIONID 值,我不应该试图从值的变化(或缺乏)来解释含义。
此外,我在应用程序上连接了一个 HttpSessionListener
,我看到 sessionDestroyed
方法被调用。
鉴于这两个元素,JSESSIONID 没有改变对我来说似乎是安全的。但是,这与我习惯的行为不同,所以想验证我的假设。
JSESSIONID 不更改是否存在安全问题?
最佳答案
不,这不应该是一个巨大的安全问题,因为与该 session 实际关联的所有数据都将被丢弃。 JSESSIONID
只是该数据(现在不存在)的关键。
但是,如果您希望 JSESSIONID
在每次注销/登录时发生变化,您可以实现注销功能,以便在用户登录时显式删除 JSESSIONID
cookie注销。然后服务器将在他们的下一个请求中为他们分配一个全新的 session /ID。
当然,如文档中所述,如果您有多个上下文,而这些上下文恰好都依赖于单个 JSESSIONID
cookie,那么从一个 cookie 中删除它实际上会从所有上下文中删除它,有效地记录用户脱离服务器上的每个上下文。尽管在实践中,拥有多个面向用户的上下文(每个上下文都有自己的登录/ session 状态)并不常见。
关于java - 用户注销后 JSessionID 没有改变 - 这是安全问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10081973/