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

Время чтения - 1 мин, 42 сек.
18 янв, 20:08
Дата
502

Просмотров

Приветствую, товарищи разработчики! Совсем недавно я заметил что не все 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.

Маргарита Морозова
Автор

Как настроить удаленный доступ к базе данных MySQL 8 на Linux Ubunty
Программирование
Настройка VPS или VDS дело не совсем простое. Поэтому записываю этот мануал чтобы вы поняли как настроить удаленный доступ к базе данных Mysql версии 8.
Январь
667
Bash скрипт для проверки публичных репозиториев Github и уведомления о них
Программирование
В этом руководстве мы покажем shell скрипт, который проверяет наличие всех публичных репозиториев под учетной записью GitHub и отправляет уведомление по электронной почте.
Октябрь 2022
702
DDoS атака с помощью Torshammer
Программирование
Проведение DDoS-атак на веб-сайты является уголовным преступлением, запрещенным законом во всем мире. Но в качестве образовательных целей мы рассмотрим процесс атаки.
Октябрь 2022
376
Записать данные в сессию php
Программирование
Записать данные в сессию на php так же легко, как записать данные в файл или cookie, однако надо знать как создавать сессионные переменные и присваивать им значение.
Сентябрь 2019
1149
Режимы работы с файлом php
Программирование
Выделяют шесть режимов работы с файлами в php, которые используется для манипуляции с файлами, в частности для открытия, создания и записи. Используется в функции fopen(), в качестве второго аргумента.
Сентябрь 2019
1114