Что надо знать про Cookie файлы с флагом HttpOnly

Время чтения - 1 мин, 42 сек.
18 янв 2024
Дата
О чем статья
О чем статья
Несмотря на то, что файлы cookie HttpOnly не могут быть прочитаны с помощью JavaScript, все же можно перезаписать файлы cookie HttpOnly с помощью JavaScript.

Приветствую, товарищи разработчики! Совсем недавно я заметил что не все Cookie файлы показываются через консоль разработчика в браузере, а именно преимущественно через java script.

Как получить Cookie файлы в консоли

Через консоль или скрипт на java script можно получить куки файлы без флага HttpOnly.

Например команда в консоли, выведет все доступные Cookie:

document.cookie
Как выглядит вывод доступных cookie в консоли
Как выглядит вывод доступных cookie в консоли

Несмотря на то, что файлы cookie HttpOnly не могут быть прочитаны с помощью JavaScript, все же можно перезаписать файлы cookie HttpOnly с помощью JavaScript.

Файлы cookie — это небольшие фрагменты данных, которые браузер отправляет с каждым запросом. Чтобы снизить риск межсайтового скриптинга (XSS), файлы cookie можно пометить как HttpOnly. Таким образом, значение cookie не может быть прочитано из JavaScript. Файлы cookie HttpOnly по-прежнему отправляются из браузера на сервер, но внутри браузера они не читаются JavaScript. Однако файлы cookie, помеченные как HttpOnly, по-прежнему можно перезаписать.

Перезапись Cookie файлов

Браузеры имеют ограничение на количество хранимых файлов cookie. Количество файлов cookie, которые может хранить домен, варьируется в зависимости от браузера, но обычно ограничивается несколькими сотнями файлов cookie. Когда записывается больше файлов cookie, самые старые файлы cookie удаляются. Установив множество файлов cookie, приложение может заставить браузер удалить старые файлы cookie.

Это работает даже с JavaScript, а также удаляет файлы cookie HttpOnly. Таким образом, установив множество файлов cookie, сценарий может удалить файлы cookie HttpOnly. После этого можно установить новый файл cookie с тем же именем, отличный от HttpOnly, что фактически перезапишет файл cookie HttpOnly.

Пример

Код примера для перезаписи cookie
Код примера для перезаписи cookie

Во-первых, эта страница устанавливает файл cookie HttpOnly, если он еще не существует:

setcookie($cookie_name, $cookie_name, 0, "", "", false, true);

Затем, когда вы нажимаете кнопку, он записывает 700 файлов cookie с помощью JavaScript.

Это заставит браузер удалить исходный файл cookie HttpOnly, поскольку браузер не будет хранить такое количество файлов cookie для одного домена. Это означает, что браузер не знает, что файл cookie был HttpOnly, и мы можем перезаписать его с помощью JavaScript:

document.cookie = "cookie_name =overwritten by JavaScript";

Несмотря на то, что HttpOnly обеспечивает некоторую защиту от JavaScript, он не защищает от удаления или перезаписи файла cookie.

731
Почему несколько VPN-расширений не могут работать одновременно на Manifest V3
Программирование
В Manifest V3 (MV3) введены существенные изменения, которые влияют на работу расширений, включая VPN-расширения. Основная причина, по которой несколько VPN-расширений не могут работать одновременно, связана с ограничениями, введенными в MV3, а также с особенностями работы сетевых запросов в Chrome.
Декабрь 2024
217
Как настроить удаленный доступ к базе данных MySQL 8 на Linux Ubunty
Программирование
Настройка VPS или VDS дело не совсем простое. Поэтому записываю этот мануал чтобы вы поняли как настроить удаленный доступ к базе данных Mysql версии 8.
Январь 2024
925
Bash скрипт для проверки публичных репозиториев Github и уведомления о них
Программирование
В этом руководстве мы покажем shell скрипт, который проверяет наличие всех публичных репозиториев под учетной записью GitHub и отправляет уведомление по электронной почте.
Октябрь 2022
866
DDoS атака с помощью Torshammer
Программирование
Проведение DDoS-атак на веб-сайты является уголовным преступлением, запрещенным законом во всем мире. Но в качестве образовательных целей мы рассмотрим процесс атаки.
Октябрь 2022
501
Записать данные в сессию php
Программирование
Записать данные в сессию на php так же легко, как записать данные в файл или cookie, однако надо знать как создавать сессионные переменные и присваивать им значение.
Сентябрь 2019
1249