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

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

Я работаю над проблемой XSS (межсайтовый скриптинг). Мое приложение работает на портале Oracle Weblogic. Мы используем Servlet версии 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 появляется проблема с тайм-аутом сеанса. Мы используем API, связанные с WebLogic. API request.getuserprinical() возвращает значение null. Полагаю, оно имеет значение null.

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

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

4b9b3361

Ответ 1

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

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

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

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

К вашему сведению: я также написал библиотеку Java, которая внедряет ряд связанных с безопасностью заголовков ответов в приложения на основе сервлетов.

Ответ 2

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

JSESSIONID=ABC3423DF...SDF;HttpOnly;Secure

Ответ 3

Я использовал теги <http-only> и <secure> в web.xml, чтобы установить защищенные атрибуты и сработал.

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