Безопасные cookie

пошаговая инструкция · Около часа

← Все инструкции

1. Что произошло

Файлы cookie без защитных флагов могут быть перехвачены или прочитаны скриптом.

2. Почему это важно

Риск кражи сессии посетителя или администратора. После исправления: Сессии пользователей станут безопаснее.

3. На каких страницах обнаружено

Заголовки Set-Cookie главной страницы: флаги Secure, HttpOnly и SameSite.

Чтобы увидеть адреса на вашем сайте, откройте инструкцию из отчёта или добавьте домен в адрес: /fix/cookies/ваш-сайт.ru.

4. Как исправить

Для WordPress

  1. WordPress ставит HttpOnly сам. Secure включается автоматически на https; если нет — убедитесь, что is_ssl() возвращает true за прокси (см. код про X-Forwarded-Proto).
WordPress за прокси/CDN (wp-config.php)
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
    $_SERVER['HTTPS'] = 'on';
}

Общее для любого сайта

  1. Для сессионных cookie включите три флага: Secure (только по https), HttpOnly (недоступны скриптам) и SameSite=Lax.
  2. В PHP это делается настройками session.cookie_*; для cookie, которые создаёт ваш код, — параметрами setcookie().
  3. Cookie аналитики и сторонних виджетов вы не контролируете — на них внимание не обращайте.

5. Готовый код

Замените example.com на свой домен. Перед правкой конфигурации сделайте резервную копию файла.

Любой сайт

php.ini / .user.ini
session.cookie_secure = 1
session.cookie_httponly = 1
session.cookie_samesite = Lax
PHP: свои cookie
setcookie('token', $value, [
    'expires'  => time() + 86400,
    'path'     => '/',
    'secure'   => true,
    'httponly' => true,
    'samesite' => 'Lax',
]);

6. Как проверить результат

  1. В каждой строке Set-Cookie должны быть Secure; HttpOnly; SameSite.
  2. Нажмите «Перепроверить сайт».
Флаги cookie
curl -sI https://example.com/ | grep -i set-cookie

Чтобы перепроверить сайт, откройте отчёт и нажмите «Проверить заново».