java - springmvc - spring入门




在JBoss中解决会话固定问题 (3)

我需要在JBoss中运行的Java Web应用程序中防止Session Fixation (会话劫持),一种特殊类型的会话劫持。 但是,标准习语在JBoss中似乎不起作用 。 这可以解决吗?


这个缺陷 (在这里找到)指出了解决方案。 在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中的一个bug,但是servlet规范(至少2.3版本)实际上并不需要根据任何特定的逻辑来定义或者重新定义JSESSIONID。 也许这已经在后来的版本中被清除了。


我来了解下面的代码设置代码片段。 我添加下面的行。 但是,当我登录到应用程序之后,打印会话ID是相同的。 我将如何测试会话固定。

  1. D:\ jboss-5.1.0.GA \ bin \ run.cof文件并添加下面一行。 设置“JAVA_OPTS =%JAVA_OPTS%-Dorg.apache.catalina.connector.Request.SESSION_ID_CHECK = false”

  2. 在jboss应用程序的每个context.xml中。 d:\ jboss-5.1.0.GA \服务器\ DEFAULT \部署\ jbossweb.sar \ context.xml中





jboss