как установить httponly и cookie сеанса для веб-приложения java

Привет я работаю над проблемой XSS (межсайтовых сценариев). мое приложение разработано на портале oracle weblogic. мы используем версию сервлета 2.5.

Я добавил ниже 3 строки кода в фильтре для установки httponly и безопасных файлов cookie. и он работает нормально.

String sessionid = req.getSession().getId();
res.setHeader("Set-Cookie", "JSESSIONID=" +  sessionid + ";HttpOnly");
res.setHeader("SET-COOKIE", "JSESSIONID=" + sessionid + "; secure");

проблема в том, когда я выхожу из системы и сразу же в том же браузере, я могу войти в систему, но после этого на страницах jsp я получаю тайм-аут сеанса. мы используем связанные с weblogic API. запрос.getuserprinical () api возвращает значение null.. думаю, это значение равно null.

любая идея, пожалуйста, поделитесь.

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

3 ответов


в зависимости от особенностей вашего веб-контейнера изменение файлов cookie сеанса, управляемых контейнером, в приложении может привести к тому, что сервер приложений выбросит существующий сеанс и создаст новый. Я наблюдал это на Tomcat, но это может быть похоже на Weblogic.

Если вы используете сервлеты 3.0, вы можете фактически проинструктировать сервер приложений, чтобы убедиться, что все файлы cookie сеанса HttpOnly и защищены следующими фрагментами:

<session-config>
  <cookie-config>
    <secure>true</secure>
    <http-only>true</http-only>
  </cookie-config>
</session-config>

Это лучший подход, чем взлом файлов cookies вручную с помощью фильтра.

FYI: я также написал Java-библиотека который вводит ряд заголовков ответов, связанных с безопасностью, в приложениях на основе сервлетов.


вам нужно использовать следующий синтаксис для установки флагов httponly и securu

JSESSIONID=ABC3423DF...SDF;HttpOnly;Secure

я использовал <http-only> и <secure> теги в интернете.xml для установки безопасных атрибутов, и это сработало.

<session-config>
 <cookie-config>
  <http-only>true</http-only>
 </cookie-config>
<session-config>