2008-08-11 19 views

Respuesta

8

This defect (encontrado here) señala el camino hacia la solución. La instancia de Tomcat que se ejecuta en JBoss se configura con emptySessionPath = "true", en lugar de "false", que es el valor predeterminado. Esto se puede modificar en .../deploy/jboss-web.deployer/server.xml; ambos conectores HTTP y AJP tienen esta opción.

La función en sí se utiliza para eliminar la ruta de contexto (por ejemplo, "foo" en http://example.com/foo) para que no se incluya en la cookie JSESSIONID. Establecerlo en falso romperá las aplicaciones que se basan en la autenticación de aplicaciones cruzadas, que incluye elementos creados con algunos marcos de portal. Sin embargo, no afectó negativamente a la aplicación en cuestión.

+0

estoy trabajando con JBoss 6.1 y simplemente pulse este problema. No hay una opción emptySessionPath en mi servidor.xml. Entonces, ¿cómo se puede hacer esto para la versión 6.1? –

+1

Si alguien más está interesado, encontré una solución. Busque la respuesta de @ Rp- en este hilo: http://stackoverflow.com/questions/11028145/listening-for-login-events-in-jboss-as-6 –

0

Este problema y el caso específico en el que se produce es un problema tanto en Tomcat como en JBoss. Tomcat comparte el efecto emptySessionPath = "true" (y en realidad JBoss lo hereda de Tomcat).

Esto realmente parece un error en Tomcat y JBoss cuando se está tratando de prevenir los ataques de fijación de sesión, pero la especificación servlet (al menos la versión 2.3) en realidad no requiere la JSESSIONID a ser definido o redefinido de acuerdo con cualquier lógica específica. Quizás esto se haya limpiado en versiones posteriores.

0

Una solución consiste en almacenar la dirección del cliente en la sesión. Un contenedor de respuestas debe validar que la dirección del cliente configurada en la sesión sea la misma que la que accede a la sesión.

+0

Su sugerencia es útil para el secuestro de sesión en general, pero no aborda la fijación de sesiones específicamente. –

0

Vine a conocer el fragmento de configuración de código a continuación de uno de los cuatro. Y agregué líneas debajo. Pero cuando imprimo la ID de la sesión después de iniciar sesión en la aplicación, es lo mismo. ¿Cómo probaría la fijación de la sesión?

  1. D: \ jboss-5.1.0.GA \ bin \ run.cof y agregue la siguiente línea. set "JAVA_OPTS =% JAVA_OPTS% -Dorg.apache.catalina.connector.Request.SESSION_ID_CHECK = false"

  2. en cada context.xml de las aplicaciones JBoss. D: \ jboss-5.1.0.GA \ server \ default \ deploy \ jbossweb.sar \ context.xml

Cuestiones relacionadas