RPT-002УРОВЕНЬ 2 · СреднийБезопасность сайта6 мин чтения

Заголовки безопасности сайта: чек-лист из 9 пунктов, который можно выполнить сегодня

Браузер следует инструкциям, которые каждый сайт отправляет раньше самой страницы. Заголовки безопасности — именно такие инструкции, и большинство сайтов не отправляет ни одного.

Команда Iron Cyber Tech

01Почему заголовки важны

Заголовки безопасности велят браузеру посетителя отказываться от рискованного поведения: загружать вашу страницу в чужом фрейме, угадывать типы файлов, передавать другим сайтам ваш полный адрес или выполнять скрипты из неизвестных источников. Они ничего не стоят, не утяжеляют страницу и закрывают целые классы атак.

021. HTTPS с действующим сертификатом

Всё начинается здесь. Весь сайт должен открываться по HTTPS с действительным, не истёкшим сертификатом. Бесплатных сертификатов Let's Encrypt или вашей CDN достаточно.

032. HTTP перенаправляет на HTTPS

Если кто-то вводит обычный адрес http://, сервер должен ответить постоянным перенаправлением на версию https://.

043. HSTS: помнить, что нужен HTTPS

Заголовок Strict-Transport-Security велит браузеру долго использовать для вашего домена только HTTPS, даже если посетитель введёт http.

Заголовок ответа
Strict-Transport-Security: max-age=31536000; includeSubDomains

054. Политика безопасности контента (CSP)

CSP перечисляет, откуда можно загружать скрипты, стили и изображения. Это самая сильная защита от межсайтового скриптинга (XSS) и самый сложный в настройке заголовок.

Заголовок ответа (отправная точка)
Content-Security-Policy: default-src 'self'; script-src 'self'; object-src 'none'; base-uri 'self'; frame-ancestors 'none'

065. Защита от кликджекинга

Не позволяйте другим сайтам встраивать ваши страницы в скрытый фрейм. Современный способ — frame-ancestors в CSP, а X-Frame-Options покрывает старые браузеры.

Заголовок ответа
X-Frame-Options: DENY

076. X-Content-Type-Options

Велит браузеру доверять объявленному типу файла и не угадывать. Одна строка, без недостатков.

Заголовок ответа
X-Content-Type-Options: nosniff

087. Referrer-Policy

Определяет, какая часть адреса вашей страницы передаётся, когда посетитель переходит по ссылке на другой сайт.

Заголовок ответа
Referrer-Policy: strict-origin-when-cross-origin

098. Без утечки технологий

Заголовки вроде Server: nginx/1.18.0 или X-Powered-By: PHP/7.4 подсказывают атакующим, какие версии искать. Удалите или скройте их, если платформа позволяет.

109. Безопасные cookie

Cookie с сессией входа должны иметь Secure (только HTTPS), HttpOnly (недоступны скриптам) и SameSite (ограничивает отправку между сайтами).

Заголовок ответа
Set-Cookie: session=...; Secure; HttpOnly; SameSite=Lax

11Где их задать

В статических ресурсах Cloudflare Workers положите обычный файл _headers рядом с файлами сайта:

_headers
/*
  Strict-Transport-Security: max-age=31536000; includeSubDomains
  X-Content-Type-Options: nosniff
  X-Frame-Options: DENY
  Referrer-Policy: strict-origin-when-cross-origin

У других хостингов своё место для этого: add_header в nginx, Header set в Apache или панель хостинга.

12Проверьте свой сайт

Введите адрес и подтвердите, что вы вправе его проверять. Отправляется один обычный запрос, как от любого браузера, ничего не сохраняется.

Живой модуль

Проверка безопасности сайта

HTTPS и заголовки безопасности, которые должен отправлять каждый сайт.

Пассивная проверка: мы отправляем на ваш сайт один обычный запрос, как любой браузер, и не храним адрес и результаты.

Главное

  • Начните с HTTPS, перенаправления и HSTS: это безопасно и быстро.
  • Затем добавьте nosniff, политику referrer и защиту от фреймов.
  • CSP вводите постепенно: сначала Report-Only, потом принудительно.

Хотите, чтобы мы посмотрели и ваш проект? Напишите нам, мы с радостью поможем.

Написать нам

Ещё сигналы

← Все сигналы