Безопасность cookie: флаги HttpOnly и Secure
Защищайте файлы cookie с помощью атрибутов HttpOnly, Secure и SameSite
«Безопасность cookie: флаги HttpOnly и Secure» — бесплатный урок PHP Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения PHP Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс PHP Academy содержит 4 уроков всего.
Флаг HttpOnly
Если для файла cookie установлен флаг HttpOnly, JavaScript не может получить к нему доступ через document.cookie, что предотвращает кражу сеанса через XSS.
Установка HttpOnly и Secure
Используйте форму с массивом параметров (PHP 7.3+), чтобы код был понятным и удобным для чтения.
<?php
setcookie("session_id", $id, [
"expires" => time() + 3600,
"path" => "/",
"secure" => true,
"httponly" => true,
"samesite" => "Strict",
]);Флаг Secure
Защищённый файл cookie отправляется только через HTTPS. При HTTP-соединениях браузер не отправляет его, предотвращая перехват через обычный HTTP.
Атрибут SameSite
SameSite определяет, когда файлы cookie отправляются с межсайтовыми запросами:
Strict— только запросы с того же сайтаLax— запросы с того же сайта и переходы верхнего уровняNone— межсайтовые запросы (требуется Secure)
SameSite и CSRF
Установка SameSite в строгий или ослабленный режим снижает риск CSRF, поскольку файл cookie сеанса не отправляется с поддельными межсайтовыми POST-запросами.
Настройки файлов cookie сеанса в php.ini
Настройте безопасность файлов cookie сеанса по умолчанию во время выполнения:
<?php
ini_set("session.cookie_httponly", "1");
ini_set("session.cookie_secure", "1");
ini_set("session.cookie_samesite", "Lax");
session_start();Префиксы файлов cookie
Браузеры учитывают префиксы имён файлов cookie:
__Secure-— для файла cookie должен быть установлен флаг Secure__Host-— должны быть установлены Secure и Path=/, а атрибут Domain отсутствовать
Пример префикса файла cookie
Используйте префикс __Host-, чтобы привязать файл cookie к конкретному хосту.
<?php
setcookie("__Host-session", $token, [
"secure" => true,
"httponly" => true,
"samesite" => "Strict",
"path" => "/",
]);Проверка флагов в DevTools
В DevTools браузера откройте Application → Cookies и проверьте: флаг HttpOnly установлен, флаг Secure установлен, для SameSite отображается Strict или Lax.
Без HttpOnly
Вредоносный скрипт, внедрённый через XSS, может выполнить document.cookie, прочитать ID сеанса и отправить его злоумышленнику, захватив учётную запись.
Без Secure
На сайте, использующем одновременно HTTP и HTTPS, файл cookie сеанса отправляется по HTTP в открытом виде. Сетевой злоумышленник может украсть его.
Итоги
Всегда устанавливайте HttpOnly и Secure для файлов cookie сеанса и аутентификации. Добавляйте SameSite=Strict или Lax. Используйте форму setcookie() с массивом параметров.
Быстрая проверка
Какой флаг запрещает JavaScript читать файл cookie?
Часто задаваемые вопросы
Урок «Безопасность cookie: флаги HttpOnly и Secure» бесплатный?
Да — полный текст урока «Безопасность cookie: флаги HttpOnly и Secure» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс PHP Academy, подпишись на CoddyKit PRO. Курс PHP Academy содержит 4 уроков всего.
Чему я научусь в уроке «Безопасность cookie: флаги HttpOnly и Secure»?
Защищайте файлы cookie с помощью атрибутов HttpOnly, Secure и SameSite Ты практикуешь PHP Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать PHP Academy?
Предыдущий опыт не требуется. PHP Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Безопасность cookie: флаги HttpOnly и Secure»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке PHP Academy?
Да. Каждый урок PHP Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Запуск и использование сессий
- Лучшие практики защиты сессий
- Установка и чтение файлов cookie
- Безопасность cookie: флаги HttpOnly и Secure