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; includeSubDomains054. Политика безопасности контента (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: DENY076. X-Content-Type-Options
Велит браузеру доверять объявленному типу файла и не угадывать. Одна строка, без недостатков.
X-Content-Type-Options: nosniff087. Referrer-Policy
Определяет, какая часть адреса вашей страницы передаётся, когда посетитель переходит по ссылке на другой сайт.
Referrer-Policy: strict-origin-when-cross-origin098. Без утечки технологий
Заголовки вроде Server: nginx/1.18.0 или X-Powered-By: PHP/7.4 подсказывают атакующим, какие версии искать. Удалите или скройте их, если платформа позволяет.
109. Безопасные cookie
Cookie с сессией входа должны иметь Secure (только HTTPS), HttpOnly (недоступны скриптам) и SameSite (ограничивает отправку между сайтами).
Set-Cookie: session=...; Secure; HttpOnly; SameSite=Lax11Где их задать
В статических ресурсах Cloudflare Workers положите обычный файл _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, потом принудительно.
Хотите, чтобы мы посмотрели и ваш проект? Напишите нам, мы с радостью поможем.
Написать нам