Подтвердить что ты не робот

Tomcat 7 sessionid cookie отключает только http-и защищает

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

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

Я знаю, что это угроза безопасности, потому что злоумышленник может украсть файл cookie и захватить сессию, если он нашел xss vuln.

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

Edit:

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

<Context useHttpOnly="false">
....
</Context>
4b9b3361

Ответ 1

Я не нашел в Tomcat решение, но если вы используете Apache в качестве обратного прокси, вы можете сделать:

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

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

Ответ 2

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

  • Установить модуль перезаписи URL-адреса IIS
  • Добавьте в свой 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>