Frage

Ich muss verhindern Sitzungsfixierung, eine besondere Art von Session-Hijacking, in einer Java-Webanwendung, die in JBoss ausgeführt wird.Es scheint jedoch, dass es sich um die Standardsprache handelt funktioniert nicht in JBoss.Kann das umgangen werden?

War es hilfreich?

Lösung

Dieser Defekt (gefunden Hier) weist den Weg zur Lösung.Die Tomcat-Instanz, die in JBoss ausgeführt wird, ist mit emptySessionPath="true" und nicht mit "false" (Standardeinstellung) konfiguriert.Dies kann in geändert werden .../deploy/jboss-web.deployer/server.xml;Sowohl der HTTP- als auch der AJP-Connector verfügen über diese Option.

Die Funktion selbst wird verwendet, um den Kontextpfad zu eliminieren (z. B.„foo“ rein http://example.com/foo) nicht in das JSESSIONID-Cookie aufgenommen werden.Wenn Sie den Wert auf „false“ setzen, werden Anwendungen beschädigt, die auf anwendungsübergreifender Authentifizierung basieren, wozu auch Dinge gehören, die mit einigen Portal-Frameworks erstellt wurden.Dies hatte jedoch keine negativen Auswirkungen auf die betreffende Anwendung.

Andere Tipps

Dieses Problem und der spezielle Fall, in dem es auftritt, treten sowohl bei Tomcat als auch bei JBoss auf.Tomcat teilt den Effekt emptySessionPath="true" (und tatsächlich erbt JBoss ihn von Tomcat).

Dies scheint wirklich ein Fehler in Tomcat und JBoss zu sein, wenn Sie versuchen, Sitzungsfixierungsangriffe zu verhindern, aber die Servlet-Spezifikation (zumindest Version 2.3) erfordert nicht wirklich, dass die JSESSIONID gemäß einer bestimmten Logik definiert oder neu definiert wird.Möglicherweise wurde dies in späteren Versionen bereinigt.

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

Ich habe den folgenden Code-Einstellungsausschnitt aus einem der Foren erfahren.Und ich habe die folgenden Zeilen hinzugefügt.Aber wenn ich die Sitzungs-ID nach und vor der Anmeldung bei der Anwendung ausdrucke, ist sie dasselbe.Wie würde ich die Sitzungsfixierung testen?

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

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top