Флаг HttpOnly не может работать на tomcat6.0.36

Я пробовал много способов использовать флаг httponly для предотвращения атаки XSS, но все потерпели неудачу.

Обычный способ - установить использование HttpOnly=true в context.xml.

Для проверки результата: в java-коде задайте два тестовых параметра в файле cookie, а передний файл jsp включает javascript для оповещения thedocument.cookie, два тестовых параметра, установленных в java-коде, получают и показывают в предупреждении.

Java-код:

 Cookie cookie = new Cookie("httponlytest","testsss");  
 response.addCookie(cookie); 
 Cookie cookie1 = new Cookie("testhttponly","successfu"); 
 response.addCookie(cookie1); 

javascript в файле jsp:

alert("cookie------------"+document.cookie);
  1. Есть ли что-то, что я сделал неправильно?
  2. Если вы знаете, как, это было бы очень полезно.

person zjzhangkui    schedule 26.04.2013    source источник


Ответы (2)


Для тех, кто не знает HttpOnly:

HttpOnly=true – это относительный новый атрибут, делающий файл cookie в браузере недоступным для JavaScript.

Таким образом, это метод безопасности только для браузера (XSS), предотвращающий доступ к JSESSION_ID (перехват сеансов Java) и тому подобное.

Таким образом, вы всегда можете установить атрибут HttpOnly в самом файле cookie. Я думаю, что для идентификатора сеанса Java он теперь используется по умолчанию, по крайней мере, так должно быть.

<Context useHttpOnly="true">

Кажется, это работает только для JSESSIONID. Я только что нашел это в SO.

person Joop Eggen    schedule 26.04.2013
comment
Вы имеете в виду, что установка useHttpOnly=true в контексте просто работает для JSESSIONID, файл cookie, установленный в бэкэнд-коде Java, все еще может быть получен с помощью javascript, верно? если да, то может ли это предотвратить XSS-атаку? Вы правильно сказали, если setSecure(true) для файла cookie в коде Java, этот файл cookie не может быть получен с помощью javascript. - person zjzhangkui; 27.04.2013
comment
setSecure для https:. Используйте Cookie.setHttpOnly(true). - person Joop Eggen; 28.04.2013

Недавно я имел дело с файлами cookie http-only=true. Во время моего исследования я обнаружил, что Mozilla и Chrome не позволяют java-апплетам использовать файлы cookie http-only=true. У меня возникла проблема с доступом к файлу cookie JsessionidSSO. Во время исследования ошибок JAVA я обнаружил эту ошибку. нет проблем с чтением файлов cookie, поскольку IE предоставил InternetGetCookieEx() для доступа к файлам cookie только http и добавлен флаг INTERNET_COOKIE_HTTPONLY доступен только в версиях IE8 и выше. Таким образом, проблема доступа к файлам cookie только для http все еще не решена, поскольку java предложила исправление в java 7 update 40, в то время как текущая версия — java 7 update21.

person gusainhimanshu    schedule 28.05.2013