2008-08-11 66 views

回答

8

This defect(找到here)指出了解决方案。在JBoss中运行的Tomcat实例配置为emptySessionPath =“true”,而不是“false”,这是默认设置。这可以在.../deploy/jboss-web.deployer/server.xml; HTTP和AJP连接器都有这个选项。

该特性本身用于消除JSESSIONID cookie中包含的上下文路径(例如http://example.com/foo中的“foo”)。将其设置为false将打破依赖跨应用程序认证的应用程序,其中包括使用某些门户框架构建的东西。但是,它并没有对所涉及的应用产生负面影响。

+0

我与JBoss 6.1工作,正好碰到这个问题。我的server.xml中没有emptySessionPath选项。那么,6.1版本怎么做呢? – 2013-05-29 07:59:35

+1

如果其他人有兴趣,我找到了一个解决方案。在这个线程中寻找@ Rp-的答案:http://stackoverflow.com/questions/11028145/listening-for-login-events-in-jboss-as-6 – 2013-05-29 09:13:31

0

这个问题以及它发生的具体情况在Tomcat和JBoss中都是一个问题。 Tomcat共享emptySessionPath =“true”效果(实际上JBoss从Tomcat继承它)。

这似乎是Tomcat和JBoss中的一个错误,当您尝试阻止会话修复攻击时,但servlet规范(至少2.3版本)实际上并不需要根据任何特定逻辑定义或重新定义JSESSIONID。也许这已经在后来的版本中被清除了。

0

一种解决方法是在会话中存储客户端地址。响应包装应验证会话中设置的客户端地址与访问会话的客户端地址相同。

0

我从四位一体的代码设置片段中了解到。我在下面添加了几行。但是当我在登录到应用程序之后和之前打印会话ID时,它是一样的。我将如何测试会话固定。

  1. D:\ jboss-5.1.0.GA \ bin \ run.cof文件并添加下面的行。 在每个jboss应用程序的context.xml中设置“JAVA_OPTS =%JAVA_OPTS%-Dorg.apache.catalina.connector.Request.SESSION_ID_CHECK = false”

  2. 。 d:\ jboss-5.1.0.GA \服务器\ DEFAULT \部署\ jbossweb.sar \ context.xml的