Разрешение фиксации сеанса в JBoss

Мне нужно предотвратить Фиксация сеанса, особый тип перехвата сеанса, в веб-приложении Java, работающем в JBoss. Однако похоже, что стандартная идиома не работает в JBoss. Можно ли это обойти?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
11
0
9 876
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Этот дефект (найдено здесь) указывает путь к решению. Экземпляр Tomcat, работающий в JBoss, настроен с emptySessionPath = "true", а не с "false", которое используется по умолчанию. Это можно изменить в .../deploy/jboss-web.deployer/server.xml; Эта опция есть как для HTTP, так и для AJP-коннекторов.

Сама функция используется для исключения включения контекстного пути (например, «foo» в http://example.com/foo) в файл cookie JSESSIONID. Установка значения false приведет к поломке приложений, которые полагаются на кросс-прикладную аутентификацию, в том числе на вещи, созданные с использованием некоторых фреймворков портала. Однако это не повлияло отрицательно на рассматриваемое приложение.

Я работаю с JBoss 6.1 и просто столкнулся с этой проблемой. В моем server.xml нет опции emptySessionPath. Итак, как это можно сделать для версии 6.1?

Zólyomi István 29.05.2013 11:59

Если кому еще интересно, нашел решение. Ищите ответ @ Rp- в этой ветке: stackoverflow.com/questions/11028145/…

Zólyomi István 29.05.2013 13:13

Эта проблема и конкретный случай, в котором она возникает, являются проблемой как в Tomcat, так и в JBoss. Tomcat разделяет эффект emptySessionPath = "true" (и фактически JBoss наследует его от Tomcat).

Это действительно похоже на ошибку в Tomcat и JBoss, когда вы пытаетесь предотвратить атаки фиксации сеанса, но спецификация сервлета (по крайней мере, версия 2.3) на самом деле не требует определения или переопределения JSESSIONID в соответствии с какой-либо конкретной логикой. Возможно, это было исправлено в более поздних версиях.

Один из способов решения этой проблемы - сохранить адрес клиента в сеансе. Обертка ответа должна подтверждать, что адрес клиента, установленный в сеансе, совпадает с адресом доступа к сеансу.

Ваше предложение полезно для перехвата сеанса в целом, но не касается конкретно фиксации сеанса.

Warren Blanchet 10.06.2011 05:09

Я узнал ниже фрагмент настройки кода с одного из форумов. И я добавил строки ниже. Но когда я печатаю идентификатор сеанса после и до входа в приложение, он остается таким же. Как бы мне протестировать сессию Fixation.

  1. D: \ jboss-5.1.0.GA \ bin \ run.cof и добавьте строку ниже. установите "JAVA_OPTS =% JAVA_OPTS% -Dorg.apache.catalina.connector.Request.SESSION_ID_CHECK = false"

  2. в каждом context.xml приложений jboss. D: \ jboss-5.1.0.GA \ server \ default \ deploy \ jbossweb.sar \ context.xml

Другие вопросы по теме