我的问题是:
从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? (或者,如果这是默认行为:什么可能导致这种情况不再发生?)
感谢任何提示/想法!
答案 0 :(得分:1)
一段时间(实际上是几年)我在这里发布了这个过滤器,用于在登录后更新会话ID:
https://issues.jboss.org/browse/JBSEAM-2450
我们在登录后立即调用newSession()来标记要在下一个GET请求上续订的会话ID(由于恢复视图状态,POST请求无法正常工作,但是POST / REDIRECT / GET Seam会经常发出GET)。
您可能希望将其放入过滤器中 - 或者只是在下一个GET请求中标记要刷新的会话。只需确保在处理JSF POST请求时不续订会话。
其他人还提供了一个Tomcat Valve来解决这个问题
祝你好运, 亚历山大。