Устранение Фиксации сеанса в JBoss
Вопрос
Мне нужно предотвратить Фиксация сеанса, определенный тип перехвата сеанса в веб-приложении Java, работающем в JBoss.Однако, похоже, что стандартная идиома не работает в JBoss.Можно ли это обойти?
Решение
Этот дефект (найдено здесь) указывает путь к решению.Экземпляр Tomcat, который выполняется в JBoss, настроен с emptySessionPath="true", а не "false", который используется по умолчанию.Это может быть изменено в .../deploy/jboss-web.deployer/server.xml
;эта опция доступна как для соединителей HTTP, так и для AJP.
Сама функция используется для устранения контекстного пути (например."foo" в http://example.com/foo) от включения в файл cookie JSESSIONID.Установка значения false приведет к сбою приложений, которые полагаются на проверку подлинности между приложениями, которая включает в себя материалы, созданные с использованием некоторых фреймворков портала.Однако это не оказало негативного влияния на рассматриваемое приложение.
Другие советы
Эта проблема и конкретный случай, в котором она возникает, являются проблемой как в Tomcat, так и в JBoss.Tomcat использует эффект emptySessionPath="true" (и фактически JBoss наследует его от Tomcat).
Это действительно похоже на ошибку в Tomcat и JBoss, когда вы пытаетесь предотвратить атаки с фиксацией сеанса, но спецификация сервлета (по крайней мере, версии 2.3) на самом деле не требует определения или переопределения JSESSIONID в соответствии с какой-либо конкретной логикой.Возможно, это было исправлено в более поздних версиях.
Одним из обходных путей является сохранение адреса клиента в сеансе.Оболочка ответа должна проверять, что адрес клиента, установленный в сеансе, совпадает с адресом клиента, обращающегося к сеансу.
Я узнал приведенный ниже фрагмент настройки кода с одного из форумов.И я добавил нижеприведенные строки.Но когда я печатаю идентификатор сеанса после и перед входом в приложение, это одно и то же.Как бы я протестировал фиксацию сеанса?
D:\jboss-5.1.0.GA\bin un.cof подайте файл и добавьте приведенную ниже строку.установите "JAVA_OPTS=%JAVA_OPTS% -Dorg.apache.catalina.connector.Запрос.SESSION_ID_CHECK=false".
в каждом context.xml из приложений jboss.D:\jboss-5.1.0.GA\server\default\deploy\jbossweb.sar\context.xml