🍪
Безопасность

Безопасность cookie — настройки SameSite, HttpOnly, Secure и Path

25.07.2034
← Все статьи

Cookie — одна из основных технологий интернета. Сессия, настройки пользователя, ключевые значения — все хранится в cookie. Но если каждый cookie не настроен правильно, это может стать дырой в безопасности. Современные браузеры и веб-стандарты предлагают для cookie несколько защитных механизмов. В этой статье рассмотрим их все.

Флаг HttpOnly — защита от JavaScript

Cookie с HttpOnly нельзя прочитать через JavaScript. Почему это важно? Если на вашем сайте есть XSS уязвимость, атакующий через document.cookie прочитает сессионный cookie и угонит сессию пользователя. Если установлен флаг HttpOnly, даже при XSS, JavaScript не сможет получить доступ к этому cookie. В PHP это включается через setcookie('name', 'value', ['httponly' => true]) или настройку session.cookie_httponly=1. На каждом сессионном и аутентификационном cookie HttpOnly обязателен.

Флаг Secure — обязательность HTTPS

Cookie с установленным флагом Secure отправляется только через HTTPS. Если запрос идет через HTTP, браузер не добавляет этот cookie. Зачем это нужно? Если пользователь находится на публичном WiFi и атакующий слушает сеть, отправленный через HTTP cookie виден в открытом виде. Флаг Secure этому препятствует. В наше время все cookie должны быть Secure — поскольку HTTPS теперь стандарт.

SameSite=Strict — самая сильная защита

Cookie с SameSite=Strict отправляется только при запросах с этого же сайта. Даже при клике по ссылке с другого сайта cookie не добавляется. Это самая сильная защита от CSRF атак. Но влияет на пользовательский опыт: если пользователь нажмет ссылку в email и зайдет на сайт, даже если он залогинен, он будет виден как неавторизованный. Подходит для банковских приложений и критических систем.

SameSite=Lax — сбалансированный подход

SameSite=Lax — это баланс между Strict и старым поведением. Cookie отправляется в большинстве случаев, но не при отправке POST формы или внутри iframe. Это защищает от большей части CSRF атак, но не нарушает пользовательский опыт. В современных браузерах SameSite=Lax используется как стандарт. Подходит для большинства веб-сайтов.

SameSite=None — нужна особая осторожность

Cookie с SameSite=None отправляется при любых cross-site запросах. Это старое поведение. Если используется SameSite=None, флаг Secure также обязателен — браузеры этого требуют. Эта настройка используется только когда необходима для внешних сервисов (analytics, ad networks, payment widgets). Использование для обычных сессионных cookie — ошибка.

Path и Domain — охват

Настройка Path определяет, на каких путях отправляется cookie. Например, cookie с path='/admin' отправляется только на страницах /admin/*. Это полезно для отделения admin cookie от других частей сайта. Настройка Domain определяет, на какие домены отправляется cookie. Например, domain='.sayt.uz' отправляет cookie на все субдомены. Но это опасно — если один субдомен небезопасен, все cookie под угрозой.

Практика Sayt.uz

На платформе Sayt.uz все cookie устанавливаются с флагами Secure, HttpOnly и SameSite=Lax. Для admin и кабинет cookie применяется отдельная настройка Path. Сессионные cookie регенерируются при важных действиях (логин, смена пароля). Разместив свой сайт на хостинге Sayt.uz, через бесплатный SSL сертификат полностью применяются Secure cookie.

Похожие статьи

🛡️ Защита от ransomware: бэкапы, сегментация, EDR и реагирование на инциденты 🎣 Защита сотрудников от фишинговых атак: обучение и технические меры 📋 Чеклист аудита безопасности: WordPress, сервер, SSL и проверка резервных копий 🔐 Мониторинг SSL-сертификатов: отслеживание срока действия и авто-обновление
🌐 Язык
🇺🇿 O'zbek 🇺🇿 Ўзбек 🇷🇺 Русский 🇬🇧 English