Как читать cookie только для http с помощью JavaScript - PullRequest
70 голосов
/ 09 ноября 2011

Есть ли способ прочитать безопасный cookie с помощью javascript?Я попытался сделать это с помощью document.cookie и, насколько я могу видеть здесь http://securitymusings.com/article/909/secure-cookies-the-httponly-flag Я не могу получить доступ к безопасному cookie таким образом.

Может кто-нибудь предложить мне обходной путь?

Ответы [ 2 ]

94 голосов
/ 09 ноября 2011

Разные браузеры включают разные меры безопасности, если установлен флаг HTTPOnly . Например, Opera и Safari не запрещают JavaScript писать в cookie. Тем не менее, чтение всегда запрещено в последней версии всех основных браузеров.

Но что более важно , почему вы хотите прочитать HTTPOnly cookie? Если вы разработчик, просто отключите флаг и убедитесь, что вы протестировали свой код для xss . Я рекомендую вам избегать отключения этого флага, если это возможно. Флаг HTTPOnly и «безопасный флаг» (который заставляет куки отправляться через https) всегда должны быть установлены.

Если вы атакующий , то вы хотите захватить сеанс . Но есть простой способ перехватить сессию, несмотря на флаг HTTPOnly. Вы все еще можете ездить на сессии, не зная идентификатора сессии. MySpace Samy worm сделал именно это. Он использовал XHR , чтобы прочитать токен CSRF и затем выполнить авторизованную задачу. Таким образом, злоумышленник может сделать почти все, что может сделать зарегистрированный пользователь.

Люди слишком сильно верят в флаг HTTPOnly, XSS все еще можно использовать. Вы должны установить барьеры вокруг чувствительных функций. Например, для изменения пароля необходимо указать текущий пароль. Способность администратора создать новую учетную запись должна требовать капчу, то есть метод предотвращения CSRF , который нельзя легко обойти с помощью XHR .

39 голосов
/ 09 ноября 2011

Смысл файлов cookie HttpOnly в том, что к ним не может получить доступ JavaScript.

Единственный способ (кроме использования ошибок браузера) для вашего скрипта, чтобы прочитать их, это иметь взаимодействующий скрипт насервер, который будет считывать значение cookie и возвращать его обратно как часть содержимого ответа.Но если вы можете и хотели бы сделать это, зачем вообще использовать куки HttpOnly?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...