2008-08-11 64 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的