Как куки HttpOnly работают с AJAX-запросами?

JavaScript необходим доступ к файлам cookie, если на сайте используется AJAX с ограничениями доступа на основе файлов cookie. Будут ли файлы cookie HttpOnly работать на сайте AJAX?

Редактировать: Microsoft создала способ предотвратить XSS-атаки, запретив JavaScript-доступ к файлам cookie, если указан HttpOnly. FireFox позже принял это. Итак, мой вопрос: если вы используете AJAX на сайте, например, StackOverflow, являются ли файлы cookie Http-Only вариантом?

Изменить 2: Вопрос 2. Если цель HttpOnly состоит в том, чтобы запретить JavaScript-доступ к файлам cookie, и вы все равно можете получить файлы cookie через JavaScript через объект XmlHttpRequest,какой смысл HttpOnly?

Изменить 3: Вот цитата из Википедии:

Когда браузер получает такой файл cookie, он должен использовать его как обычно в следующих обменах HTTP, но не для того, чтобы сделать его видимым для сценариев на стороне клиента. [32]HttpOnly Флаг не является частью какого-либо стандарта и не реализован во всех браузерах. Обратите внимание, что в настоящее время нет предотвращения чтения или записи файла cookie сеанса через XMLHTTPRequest. [33].

Я это понимаюdocument.cookie заблокирован, когда вы используете HttpOnly. Но кажется, что вы все еще можете прочитать значения cookie в объекте XMLHttpRequest, что позволяет использовать XSS. Как HttpOnly делает вас безопаснее, чем? Делать куки по сути только для чтения?

В вашем примере я не могу написать вашему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 () в строку, повторно вывести файл cookie, а затем опубликовать его во внешнем домене. Похоже, что Википедия и хакеры согласны со мной в этом вопросе, но я бы с удовольствием перевоспитался ...

Окончательное редактирование: Ааа, видимо оба сайта не правы, это на самом делеошибка в FireFox, IE6 & 7 - фактически единственные браузеры, которые в настоящее время полностью поддерживают HttpOnly.

Чтобы повторить все, что я узнал:

HttpOnly ограничивает весь доступ к document.cookie в IE7 и FireFox (не уверен в других браузерах)HttpOnly удаляет информацию cookie из заголовков ответов в XMLHttpObject.getAllResponseHeaders () в IE7.Объекты XMLHttpObject могут быть отправлены только на тот домен, с которого они созданы, поэтому междоменная публикация файлов cookie отсутствует.

редактировать: эта информация, вероятно, больше не актуальна.

Ответы на вопрос(9)

Ваш ответ на вопрос