0Pricing
PHP Academy · Урок

Безопасность 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 — локальная установка не требуется.

Все уроки этого курса

  1. Запуск и использование сессий
  2. Лучшие практики защиты сессий
  3. Установка и чтение файлов cookie
  4. Безопасность cookie: флаги HttpOnly и Secure
← Назад к PHP Academy