Resolvendo fixação de sessão no JBoss
Pergunta
Eu preciso prevenir Fixação de Sessão, um tipo específico de sequestro de sessão, em um aplicativo Web Java executado no JBoss.No entanto, parece que o idioma padrão não funciona no JBoss.Isso pode ser contornado?
Solução
Este defeito (encontrado aqui) aponta o caminho para a solução.A instância do Tomcat executada no JBoss é configurada com emptySessionPath="true", em vez de "false", que é o padrão.Isto pode ser modificado em .../deploy/jboss-web.deployer/server.xml
;ambos os conectores HTTP e AJP têm esta opção.
O próprio recurso é usado para eliminar o caminho do contexto (por exemplo."foo" em http://example.com/foo) seja incluído no cookie JSESSIONID.Configurá-lo como falso interromperá os aplicativos que dependem de autenticação entre aplicativos, o que inclui itens criados usando algumas estruturas de portal.No entanto, isso não afetou negativamente o aplicativo em questão.
Outras dicas
Este problema e o caso específico em que ocorre é um problema no Tomcat e também no JBoss.O Tomcat compartilha o efeito emptySessionPath="true" (e na verdade o JBoss o herda do Tomcat).
Isso realmente parece um bug no Tomcat e no JBoss quando você está tentando evitar ataques de fixação de sessão, mas a especificação do servlet (pelo menos a versão 2.3) não exige que o JSESSIONID seja definido ou redefinido de acordo com qualquer lógica específica.Talvez isso tenha sido eliminado em versões posteriores.
Uma solução alternativa é armazenar o endereço do cliente na sessão.Um wrapper de resposta deve validar se o endereço do cliente definido na sessão é o mesmo que está acessando a sessão.
Eu descobri o trecho de configuração de código abaixo de um dos fóruns.E adicionei as linhas abaixo.Mas quando imprimo o ID da sessão antes e depois do login no aplicativo, é o mesmo.Como eu testaria a fixação da sessão.
D:\jboss-5.1.0.GA\bin un.cof e adicione a linha abaixo.definir "JAVA_OPTS=%JAVA_OPTS% -Dorg.apache.catalina.connector.Request.SESSION_ID_CHECK=false"
em cada context.xml das aplicações jboss.D:\jboss-5.1.0.GA\server\default\deploy\jbossweb.sar\context.xml