【发布时间】:2011-11-12 00:34:01
【问题描述】:
我的问题是:
从 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,然后劫持会话。
那么如何告诉 Tomcat 在更改为 https 时使用不同的 JSESSIONID? (或者如果这是默认行为:什么会导致这种情况不再发生?)
感谢任何提示/想法!
【问题讨论】:
-
你如何测试JSESSIONID的变化?我已经在 v6.0.20 上进行了测试并启用了 Tomcat RequestDumperValve - 它向我展示了 JSESSIONID 从 http 到 https 的变化
-
嗨,我只是在浏览器中查看 JSESSIONID(请求/响应标头)。那里永远不会改变..我会尝试启用 RequestDumperValve(我没听说过)并会再次检查..
-
是的,对我来说,它不会改变 JSESSIONID :( .. 现在我需要找出为什么我猜这不会发生 :(
-
您可以尝试一个只有 1 个安全页面和一个不安全页面的新虚拟 Web 应用程序吗?这样我们就可以知道是 Tomcat 内部的问题还是 JSF/Seam 应用程序的问题
-
为什么您首先允许通过 HTTP 交换登录凭据以获取 cookie?您使解决方案过于复杂,甚至无法正常工作
标签: http tomcat https seam session-cookies