【发布时间】:2008-08-11 22:53:50
【问题描述】:
我需要在 JBoss 中运行的 Java Web 应用程序中防止 Session Fixation,这是一种特定类型的会话劫持。但是,似乎标准成语doesn't work in JBoss。这可以解决吗?
【问题讨论】:
我需要在 JBoss 中运行的 Java Web 应用程序中防止 Session Fixation,这是一种特定类型的会话劫持。但是,似乎标准成语doesn't work in JBoss。这可以解决吗?
【问题讨论】:
This defect(找到here)指出了解决方法。在 JBoss 中运行的 Tomcat 实例配置为 emptySessionPath="true",而不是默认的 "false"。这个可以在.../deploy/jboss-web.deployer/server.xml修改; HTTP 和 AJP 连接器都有这个选项。
该功能本身用于消除上下文路径(例如http://example.com/foo 中的“foo”)不包含在 JSESSIONID cookie 中。将其设置为 false 将破坏依赖跨应用程序身份验证的应用程序,其中包括使用某些门户框架构建的内容。但是,它并没有对相关应用程序产生负面影响。
【讨论】:
这个问题和它发生的具体情况是Tomcat和JBoss中的一个问题。 Tomcat 共享 emptySessionPath="true" 效果(实际上 JBoss 继承自 Tomcat)。
当您试图防止会话固定攻击时,这看起来确实像 Tomcat 和 JBoss 中的一个错误,但 servlet 规范(至少 2.3 版)实际上并不要求根据任何特定逻辑定义或重新定义 JSESSIONID。也许这在以后的版本中已经被清除了。
【讨论】:
一种解决方法是将客户端地址存储在会话中。响应包装器应验证会话中设置的客户端地址与访问会话的客户端地址相同。
【讨论】:
我从一个论坛中了解到下面的代码设置 sn-p。我在下面添加了几行。但是当我在登录应用程序之后和之前打印会话 ID 时,它是相同的。我将如何测试会话固定。
D:\jboss-5.1.0.GA\bin\run.cof 文件并添加以下行。 设置“JAVA_OPTS=%JAVA_OPTS% -Dorg.apache.catalina.connector.Request.SESSION_ID_CHECK=false”
在 jboss 应用程序的每个 context.xml 中。 D:\jboss-5.1.0.GA\server\default\deploy\jbossweb.sar\context.xml
【讨论】: