JSessionID перезаписывается при переключении между HTTP и HTTPS.Как решить? - PullRequest
2 голосов
/ 08 апреля 2011

У нас происходит следующая ситуация:

  1. Перейдите на http : // веб-сайт / и щелкните ссылку на http : // веб-сайт / appX
    Убедитесь, что файл cookie показывает JSessionID с безопасным = NO.

  2. Откройте другое окно или вкладку браузера и перейдите на https : // веб-сайт / и нажмите ссылку на https : //website/appY.
    Убедитесь, что файл cookie показывает JSessionID с безопасным = YES.

  3. Попробуйте взаимодействовать с окном / вкладкой, созданной на шаге 1. Сессия истекла ...

Если мы повторим шаги, но используем https : // website / appX вместо https : // website / appY на шаге 2, тогда файл cookie JSessionID останется с Secure = NO .

Все файлы cookie имеют JSessionId с добавлением jvmRoute в конце.

-

Мы используем:

Apache (2.2.3-43.el5_5.3) + mod_jk (с липкими сессиями) и балансировщик нагрузки, настроенный для нескольких экземпляров JBoss (v 4.3.0).

Я нашел только ссылку с точно такой же проблемой (обычно другие используют PHP): http://threebit.net/mail-archive/tomcat-users/msg17687.html

В: Как мы можем предотвратить перезапись файла cookie JSessionId?

Ответы [ 3 ]

2 голосов
/ 08 апреля 2011

С точки зрения безопасности, это правильное поведение, потому что злоумышленник может украсть идентификатор сеанса / cooki, используемый в https, если тот же идентификатор сеанса / cooki также используется в http.

Для получения дополнительной информацииподробности смотрите в моем ответе здесь .

Так что, если вы хотите создать безопасное приложение (я ожидаю, потому что вы используете https), то вы не должны изменять это!

1 голос
/ 08 апреля 2011

SessionID / Cookie не будут сохранены при переключении с HTTPS на HTTP или наоборот. Вы можете передать эти параметры в URL для передачи значений.

0 голосов
/ 26 сентября 2011

В конфигурации соединителя (для связанной версии Tomcat в JBoss) в deploy / jboss-web.deployer / server.xml есть атрибут emptySessionPath, который контролирует, установлен ли файл cookie сеанса по контекстному пути или нет.

<Connector port="8080" address="${jboss.bind.address}"    
     maxThreads="250" maxHttpHeaderSize="8192"
     emptySessionPath="true" protocol="HTTP/1.1"
     enableLookups="false" redirectPort="8443" acceptCount="100"
     connectionTimeout="20000" disableUploadTimeout="true" /> 

Если для этого параметра установлено значение false, у вас будет один файл cookie для каждого приложения, что предотвращает возникновение проблемы.

...