как установить 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>