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

如何在从http切换到https时强制新会话cookie/sessionId(在Tomcat中),http,tomcat,https,seam,session-cookies,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更改为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呢? (或者如果这是默认行为:什么会导致这种情况不再发生?)

谢谢你的任何提示/想法

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

我们在登录后调用newSession(),以在下一个GET请求中标记要更新的会话ID(POST请求由于视图状态的恢复而无法正常工作,但是POST/REDIRECT/GET with Seam会经常发出GET)

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

其他人也提供了Tomcat阀来解决这个问题

致以最良好的祝愿,
Alexander。

您如何测试JSESSIONID的更改?我已经在v6.0.20上进行了测试,并启用了Tomcat RequestDumperValve——它向我展示了JSESSIONID从http到httpsHi的变化,我只是在浏览器中查看JSESSIONID(请求/响应头)。在那里它永远不会改变。。我将尝试启用RequestDumperValve(我没有听说过),并再次检查..是的,对我来说,它不会更改JSESSIONID:(…现在我需要找出为什么不会发生这种情况,我想:(你能尝试一个只有一个安全页面和一个不安全页面的新虚拟web应用程序吗?这样我们就可以知道这是tomcat内部的问题还是JSF/Seam应用程序的问题。为什么你首先允许通过HTTP交换cookie的登录凭据?你把解决方案复杂化了,甚至无法工作