如何在从http切换到https时强制使用新的会话cookie / sessionId(在Tomcat中)

时间:2011-09-07 10:07:16

标签: http tomcat https seam session-cookies

我的问题是:

从http更改为https时:如何在Tomcat上强制执行JSESSIONID /(即会话cookie)的值?

这是我的情况:

我认为我们的应用程序中存在潜在的安全问题,并想知道如何解决它。

我们在Tomcat 6.x中运行JSF1.2 / Seam2应用程序并强制使用会话cookie(URL中没有sessionid)。

我们允许http访问,但是当用户登录时,我们切换到https并保持https状态。 我们还有一个过滤器,只要请求通过https发送,就会向cookie添加“安全”,以确保会话无法返回到http。 (不知怎的,我以为Tomcat会自动这样做)

我注意到在http和https之间切换时JSESSIONID没有改变。 这告诉我,攻击者可能会通过http侦听会话cookie然后劫持会话。

那么在更改为https时如何告诉Tomcat使用不同的JSESSIONID? (或者,如果这是默认行为:什么可能导致这种情况不再发生?)

感谢任何提示/想法!

1 个答案:

答案 0 :(得分:1)

一段时间(实际上是几年)我在这里发布了这个过滤器,用于在登录后更新会话ID:

https://issues.jboss.org/browse/JBSEAM-2450

我们在登录后立即调用newSession()来标记要在下一个GET请求上续订的会话ID(由于恢复视图状态,POST请求无法正常工作,但是POST / REDIRECT / GET Seam会经常发出GET)。

您可能希望将其放入过滤器中 - 或者只是在下一个GET请求中标记要刷新的会话。只需确保在处理JSF POST请求时不续订会话。

其他人还提供了一个Tomcat Valve来解决这个问题

祝你好运, 亚历山大。