Результаты поиска
Как HttpOnly cookies работают с AJAX запросами?
JavaScript необходим доступ к файлам cookie, если AJAX используется на сайте с ограничениями доступа на основе файлов cookie. Будут ли файлы cookie HttpOnly работать на сайте AJAX?
Изменить: Microsoft создала способ предотвращения атак XSS, запретив JavaScript доступ к файлам cookie, если указано HttpOnly. FireFox позже принял это. Итак, мой вопрос: если вы используете AJAX на сайте, как StackOverflow, являются ли Http-только файлы cookie опцией?
Правка 2: Вопрос 2. Если целью HttpOnly является предотвращение доступа JavaScript к cookies, и вы все еще можете получить cookies через JavaScript через объект XmlHttpRequest, то в чем смысл HttpOnly ?
Правка 3: Вот цитата из Википедии:
Когда браузер получает такой файл cookie, он должен использовать его как обычно в следующих обменах HTTP, но не делать его видимым для клиентской стороны scripts.[32] флаг
HttpOnlyне является частью какого-либо стандарта и не реализован во всех браузерах. Обратите внимание, что в настоящее время нет никакой возможности предотвратить чтение или запись сессионного куки через XMLHTTPRequest. [33].
Я понимаю, что document.cookie блокируется, когда вы используете HttpOnly. Но похоже, что вы все еще можете прочитать значения cookie в объекте XMLHttpRequest, допуская XSS. Как HttpOnly делает вас более безопасным, чем? Делая файлы cookie по существу только для чтения?
В вашем примере я не могу написать на ваш document.cookie, но я все еще могу украсть ваш файл cookie и отправить его в свой домен, используя объект XMLHttpRequest.
<script type="text/javascript">
var req = null;
try { req = new XMLHttpRequest(); } catch(e) {}
if (!req) try { req = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) {}
if (!req) try { req = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {}
req.open('GET', 'http://stackoverflow.com/', false);
req.send(null);
alert(req.getAllResponseHeaders());
</script>
Правка 4: Извините, я имел в виду, что вы можете отправить XMLHttpRequest в домен StackOverflow, а затем сохранить результат getAllResponseHeaders() в строку, regex из файла cookie, а затем отправить его во внешний домен. Похоже, что Википедия и ha.ckers согласны со мной в этом, но я хотел бы быть перевоспитанным...
Окончательное редактирование: Ах, очевидно, оба сайта ошибочны, на самом деле это ошибка в FireFox . IE6 & 7 на самом деле являются единственными браузерами, которые в настоящее время полностью поддерживают HttpOnly.
Чтобы повторить все, что я узнал:
- HttpOnly ограничивает весь доступ к document.cookie в IE7 & и FireFox (не уверен в других браузерах)
- HttpOnly удаляет информацию о файлах cookie из заголовков ответов в XMLHttpObject.getAllResponseHeaders() в IE7.
- XMLHttpObjects могут быть отправлены только в домен, из которого они исходят, поэтому нет никакой междоменной публикации файлов cookie.
правка: эта информация, скорее всего, больше не актуальна.