Ich muss verhindern, Session Fixation, eine bestimmte Art von Session Hijacking, in einer Java-Webanwendung in JBoss ausgeführt wird. Es scheint jedoch, dass das Standard-Idiom . Kann das umgangen werden?Auflösung Sitzungsfixierung in JBoss
Antwort
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.
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.
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.
Ihr Vorschlag ist nützlich für Session-Hijacking im Allgemeinen, aber geht nicht speziell auf die Sitzfixierung ein. –
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?
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"
in jedem context.xml der jboss Anwendungen. D: \ jboss-5.1.0.GA \ server \ default \ deploy \ jbossweb.sar \ context.xml
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? –
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 –