java - 用户注销后 JSessionID 没有改变 - 这是安全问题吗?

标签 java security servlets weblogic

在我们的 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/

相关文章:

java - Android Action Overflow 按钮的自定义可绘制对象

java - 编译错误相关

php - 这个登录系统安全吗?

java - servlets-default.jar 有什么作用?

java - 如何访问索引页?

java - 如何通过 Android 模拟器从我的电脑访问我的 webapp?

Java数组,打印其他内容

security - 在 JBoss 7.1.1Final 中添加新的安全域

java - 如何在 java 中安全地删除内存中的 secret 数据并保证它不会是 'optimized' ?

java - 相同的选项在下拉列表中被选择两次,如何停止?