2008-08-11 21 views

Antwort

8

This defect (gefunden here) zeigt den Weg zur Lösung. Die Tomcat-Instanz, die in JBoss ausgeführt wird, wird mit "emptySessionPath =" true "anstatt" false "konfiguriert, was der Standardwert ist. Dies kann in .../deploy/jboss-web.deployer/server.xml geändert werden; Sowohl die HTTP- als auch die AJP-Anschlüsse haben diese Option.

Die Funktion selbst wird verwendet, um den Kontextpfad (z. B. "foo" in http://example.com/foo) aus dem JSESSIONID-Cookie auszuschließen. Wenn Sie den Wert auf "false" setzen, werden Anwendungen, die auf anwendungsübergreifende Authentifizierung angewiesen sind, die aus einigen Portal-Frameworks besteht, nicht mehr verwendet. Es hat sich jedoch nicht negativ auf die betreffende Anwendung ausgewirkt.

+0

Ich arbeite mit JBoss 6.1 und nur dieses Problem zu schlagen. In meiner server.xml gibt es keine Option "emptySessionPath". Wie kann dies für die Version 6.1 getan werden? –

+1

Wenn jemand anderes interessiert ist, habe ich eine Lösung gefunden. Suchen Sie in diesem Thread nach der Antwort von @Rp-: http://stackoverflow.com/questions/11028145/listening-for-login-events-in-jboss-as-6 –

0

Dieses Problem und der spezielle Fall, in dem es auftritt, ist ein Problem in Tomcat sowie JBoss. Tomcat teilt den Effekt emptySessionPath = "true" (und JBoss erbt es tatsächlich von Tomcat).

Dies scheint wirklich ein Fehler in Tomcat und JBoss zu sein, wenn Sie Session Fixation Attacken zu verhindern versuchen, aber die Servlet-Spezifikation (mindestens Version 2.3) erfordert nicht die JSESSIONID definiert oder neu definiert nach einer bestimmten Logik. Vielleicht wurde dies in späteren Versionen bereinigt.

0

Eine Problemumgehung besteht darin, die Clientadresse in der Sitzung zu speichern. Ein Antwort-Wrapper sollte überprüfen, ob die in der Sitzung festgelegte Clientadresse mit derjenigen übereinstimmt, die auf die Sitzung zugreift.

+0

Ihr Vorschlag ist nützlich für Session-Hijacking im Allgemeinen, aber geht nicht speziell auf die Sitzfixierung ein. –

0

Ich kam unten Code-Einstellung-Ausschnitt von einer der vier zu wissen. Und ich habe unten Linien hinzugefügt. Aber wenn ich die Sitzungs-ID nach und vor der Anmeldung in der Anwendung drucke, ist es dasselbe. Wie würde ich die Sitzungsfixierung testen?

  1. D: \ jboss-5.1.0.GA \ bin \ run.cof Datei und fügen Sie die folgende Zeile hinzu. set "JAVA_OPTS =% JAVA_OPTS% -Dorg.apache.catalina.connector.Request.SESSION_ID_CHECK = false"

  2. in jedem context.xml der jboss Anwendungen. D: \ jboss-5.1.0.GA \ server \ default \ deploy \ jbossweb.sar \ context.xml