2013-03-19 6 views
9

Привет, Я работаю над проблемой XSS (межсайтовый скриптинг). мое приложение развивается на веб-портале oracle. мы используем версию Servlet 2.5.Как установить httponly и session cookie для веб-приложения java

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

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

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

любая идея делитесь.

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

ответ

16

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

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

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

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

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

+0

Не могли бы вы проверить этот вопрос Джейсона? http://stackoverflow.com/questions/28341645/is-it-possible-to-use-https-only-for-login-in-spring-security. Я думаю, вы могли бы много помочь, и это имеет сходство с этим вопросом:) – mannuk

1

Вам необходимо использовать следующий синтаксис для установки как HTTPOnly и securu флаги

JSESSIONID=ABC3423DF...SDF;HttpOnly;Secure 
0

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

<session-config> 
<cookie-config> 
    <http-only>true</http-only> 
</cookie-config> 
<session-config> 
Смежные вопросы