Обновление: материал JSESSIONID здесь только для старых контейнеров. Пожалуйста, используйте jt в настоящее время принимается, если только вы используете < Tomcat 6.0.19 или < Tomcat 5.5.28 или другой контейнер, который не поддерживает файлы cookie HttpOnly JSESSIONID в качестве опции конфигурации.
При установке куки в вашем приложении, используйте
response.setHeader("Set-Cookie", "name=value; HttpOnly");
Однако во многих WebApps, наиболее важным является печенье идентификатор сеанса, который автоматически устанавливается в контейнер, как печенье JSESSIONID.
Если вы используете этот файл cookie, вы можете написать ServletFilter, чтобы повторно установить файлы cookie на выходе, заставив JSESSIONID HttpOnly. На странице
http://keepitlocked.net/archive/2007/11/05/java-and-httponly.aspx
http://alexsmolen.com/blog/?p=16 предлагает добавить в фильтр следующее.
if (response.containsHeader("SET-COOKIE")) {
String sessionid = request.getSession().getId();
response.setHeader("SET-COOKIE", "JSESSIONID=" + sessionid
+ ";Path=/<whatever>; Secure; HttpOnly");
}
но учтите, что это приведет к перезаписи всех файлов cookie и установит только то, что вы здесь указываете в этом фильтре.
Если вы используете дополнительные файлы cookie в файле cookie JSESSIONID, вам необходимо расширить этот код, чтобы установить все файлы cookie в фильтр. Это не является отличным решением в случае нескольких файлов cookie, но, возможно, является приемлемым быстродействием для настройки JSESSIONID.
Обратите внимание, что по мере развития вашего кода с течением времени вас ждет неприятная скрытая ошибка, когда вы забудете об этом фильтре и попытаетесь установить еще один файл cookie в другом месте вашего кода. Конечно, он не будет установлен.
Это действительно хак. Если вы используете Tomcat и можете его скомпилировать, взгляните на превосходное предложение Shabaz по исправлению поддержки HttpOnly в Tomcat.
Этот код удаляет флаг Secure, тем самым делая использование https бессмысленным. – 2010-06-23 15:02:29
В Servlet серверах приложений 3.0 жалоб я могу установить HttpOnly и безопасные флаги для куки сессии (JSESSIONID), добавив следующее в web.xml: <сеанс-конфигурации> <куки-конфигурации> правда true cookie-config> session-config> –
2014-09-25 09:21:47
@RogerJin, пожалуйста, отправьте это как новый ответ, этот 6-летний ответ становится все более устаревшим. – Cheekysoft 2014-09-25 13:22:26