2013-08-01 2 views
23

У меня есть веб-приложение, которое работает на сервере Tomcat 7. Файл cookie с идентификатором сеанса по умолчанию имеет флаги HttpOnly и Secure. Я хочу отключить эти флаги для файла cookie JSESSIONID. Но это не сработает. Я изменил это в своем файле web.xml, но он не работает.Tomcat 7 sessionid cookie отключить http-only и secure

<session-config> 
    <session-timeout>20160</session-timeout> 
    <cookie-config> 
     <http-only>false</http-only> 
     <secure>false</secure> 
    </cookie-config> 
</session-config> 

Я знаю, что это создает угрозу безопасности, поскольку злоумышленник может украсть куки и угнать сессию, если он нашел XSS vuln.

Файл cookie JSESSIONID должен быть отправлен с HTTP и HTTPS и с запросами AJAX.

Edit:

Я успешно отключил HttpOnly флаг, добавив следующий параметр conf/context.xml файла:

<Context useHttpOnly="false"> 
.... 
</Context> 
+0

Пожалуйста, закройте этот вопрос, вы получили ответ. Благодарю. – eze1981

+0

Вы узнали, как отключить защиту? – wutzebaer

+2

Недавнее обновление Chrome делает это очень важным! https://chromium.googlesource.com/chromium/src/+/a26e439d02baa9514b09c637bf5fa9f6790c4c3e –

ответ

1

я не нашел решение в Tomcat для этого, но если вы» повторное использование апача в качестве обратного прокси-сервера вы можете сделать:

Header edit* Set-Cookie "(JSESSIONID=.*)(; Secure)" "$1" 

с mod_headers, который выведет заголовок на обратном пути, чтобы удалить безопасный флаг. Не очень, но работает, если это важно.

0

В дополнение к решению Джорджа Пауэлла выше для Apache, если вы находитесь на IIS, вы можете решить ее следующим образом:

  1. Установите модуль
  2. IIS URL Rewrite Добавьте следующие строки в web.config

<rewrite> 
 
    <outboundRules> 
 
    <rule name="RemoveSecureJessionID"> 
 
     <match serverVariable="RESPONSE_Set-Cookie" pattern="^(.*JSESSIONID.*)Secure;(.*)$" /> 
 
     <action type="Rewrite" value="{R:1}{R:2}" /> 
 
    </rule> 
 
    </outboundRules> 
 
</rewrite>

Этот раствор был от Pete Freitag's blog

Как указано выше, с момента последнего обновления Chrome (январь 2017 года) это стало проблемой.

Смежные вопросы