2013-04-26 3 views
1

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

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

Для тестового результата: в коде Java установить два тестовых параметров в куки и в файле передней Jsp включают JavaScript для предупреждения document.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. Если вы знаете, как это было бы очень полезно.

ответ

0

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

HttpOnly = истинный относительный новый атрибут, чтобы сделать куки в браузере недоступны для JavaScript.

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

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

<Context useHttpOnly="true"> 

Это, похоже, работает только для JSESSIONID. Я только что нашел this в SO.

+0

Спасибо за ваш ответ. – zjzhangkui

+0

Вы имеете в виду, установив useHttpOnly = "true" в контексте - это просто работа для JSESSIONID, cookie, установленный в backend java-коде, все равно может быть получен javascript, не так ли? если да, то может ли он предотвратить атаку XSS? Вы сказали правильно, если setSecure (true) для cookie в java-коде, этот файл cookie не может быть получен с помощью javascript. – zjzhangkui

+0

'setSecure' для' https: '. Используйте [Cookie.setHttpOnly (true)] (http://docs.oracle.com/javaee/7/api/javax/servlet/http/Cookie.html). –

0

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

Смежные вопросы