Файлы cookie (HTTP cookie) — небольшие фрагменты данных, которые сайт сохраняет в браузере пользователя и которые браузер возвращает с каждым запросом; они нужны для входа в аккаунт, настроек и отслеживания.
Как работают cookie
Веб-сервер устанавливает cookie с помощью заголовка ответа Set-Cookie, после чего браузер прикрепляет его к последующим запросам к тому же сайту. Механизм описан в RFC 6265. Cookie делят на несколько групп:
- Сессионные cookie — поддерживают вход пользователя в систему; обычно содержат случайный идентификатор сессии.
- Постоянные cookie — хранят настройки или вход с опцией «запомнить меня» до истечения срока действия.
- Сторонние cookie — устанавливаются встроенными рекламными и аналитическими сервисами для отслеживания пользователей на разных сайтах; большинство браузеров уже ограничивает их.
Поведение cookie задают атрибуты безопасности: Secure разрешает передачу только по HTTPS, HttpOnly скрывает cookie от JavaScript, а SameSite ограничивает их отправку с межсайтовыми запросами.
Почему cookie важны для безопасности
Действующий сессионный cookie равноценен паролю вместе со вторым фактором, ведь вход уже выполнен. Поэтому злоумышленники крадут cookie, чтобы обойти многофакторную аутентификацию, — это разновидность перехвата сессии, описанная в MITRE ATT&CK как T1539 (Steal Web Session Cookie). Инфостилеры массово копируют базы cookie из браузеров, а украденные сессии продаются на криминальных площадках. В 2023 году YouTube-канал Linus Tech Tips был угнан после того, как сотрудник запустил вредонос, похитивший сессионные cookie. Отсутствие HttpOnly открывает путь к краже через межсайтовый скриптинг, а без SameSite становится возможной CSRF-атака.
Как защитить cookie
- Разработчикам — задавать для сессионных cookie атрибуты Secure, HttpOnly и SameSite и ограничивать время жизни сессий.
- Аннулировать сессии при выходе из аккаунта и смене пароля.
- Пользователям — выходить из важных сервисов, не устанавливать пиратское ПО и обновлять браузер.