HTTP-заголовки безопасности
Самые простые улучшения безопасности - серверные заголовки, защищающие от XSS, кликджекинга, MIME-сниффинга и SSL-стриппинга. Большинство настраивается менее чем за час.
Ludwig Makhyan · Основатель, WebsiteCoach ·
Перейти к разделу
Краткий обзор для руководителей
HTTP-заголовки безопасности - это директивы на уровне сервера, которые инструктируют браузеры о безопасной обработке контента. Это одни из наиболее эффективных и наименее трудозатратных улучшений безопасности - как правило, требуют только настройки сервера или CDN без изменений кода. Отсутствующие заголовки постоянно упоминаются в TOP 10 угроз безопасности веб-приложений по версии OWASP.
Влияние на биз нес
Успешная XSS-атака (предотвращаемая с помощью CSP) может привести к перехвату сессий, краже учётных данных и утечкам данных клиентов. По GDPR утечка данных может повлечь штрафы до 4% от мирового годового оборота. Отсутствие HSTS делает ваш сайт уязвимым для SSL-стриппинга - атаки «человек посередине», перехватывающей данные по незашифрованным соединениям.
Источник: анализ заголовков HTTP-ответа, выполняемый при каждом аудите WebsiteCoach.
Заголовки безопасности с пояснениями
- Content-Security-Policy (CSP)
- CSP ограничивает источники ресурсов. Сначала проверьте политику в режиме report-only, затем включайте блокировку.
- Strict-Transport-Security (HSTS)
- HSTS закрепляет использование HTTPS. Проверьте покрытие HTTPS перед увеличением max-age и включением поддоменов.
- X-Frame-Options / frame-ancestors
- Значение nosniff ограничивает определение типа содержимого браузером. Также отправляйте правильный Content-Type.
- X-Content-Type-Options
- Ограничивает встраивание страницы во фрейм. Согласуйте его с CSP frame-ancestors и нужными интеграциями.
- Permissions-Policy
- Определяет объём информации об исходном URL в запросах. Проверьте требования используемых сервисов.
- Referrer-Policy
- Разрешает или запрещает функции браузера, например камеру. Оставляйте только необходимые возможности.
- Действительность и срок действия SSL/TLS-сертификата
- CORP ограничивает использование ресурса другими источниками в соответствующих запросах no-cors.
- Обнаружение небезопасных cookie
- COOP изолирует контексты браузера. Проверьте всплывающие окна входа и оплаты.
- Настройка CORS
- COEP задаёт требования к внешним ресурсам. Проверьте их настройки CORS или CORP.
План действий по ролям
- →Утвердить внедрение заголовков безопасности как часть позиции по соответствию требованиям
- →Понять, что отсутствующие CSP и HSTS являются распространёнными находками при аудитах безопасности и пентестах
- →Включить соответствие заголовков безопасности в оценки безопасности поставщиков
- →Настроить все заголовки безопасности на уровне обратного прокси или CDN (nginx, Cloudflare, Vercel)
- →Включить предзагрузку HSTS через hstspreload.org после подтверждения полного покрытия HTTPS
- →Добавить управляемый набор правил заголовков безопасности Cloudflare при использовании Cloudflare
- →Разработать политику CSP начиная с режима только-отчёты, чтобы избежать критических изменений
- →Использовать Mozilla Observatory или WebsiteCoach для оценки полноты заголовков
- →Настроить endpoint отчётности о нарушениях CSP для мониторинга заблокированных ресурсов
- →Проверить и ужесточить Permissions-Policy, оставив только необходимые API браузера
- →Удалить все inline-блоки <script> и <style> - заменить внешними файлами (требуется для строгой CSP)
- →Проверить все сторонние скрипты и добавить их домены в белый список CSP
- →Тестировать после развёртывания CSP, используя консоль браузера для выявления ошибок нарушений
Как проверить заголовки ответа
Откройте вкладку Network в инструментах браузера и выберите последний запрос документа после перенаправлений. Команда ниже показывает заголовки каждого ответа, используя GET.
- Проверьте главную страницу, статью и ответ с ошибкой: настройки могут различаться.
- Сопоставьте политику с необходимыми скриптами, фреймами и внешними сервисами.
- После изменения проверьте вход в аккаунт, оплату и сообщения в консоли браузера.
curl -sS -L -D - -o /dev/null https://example.com/Безопасное внедрение CSP и HSTS
Сначала тестируйте CSP в режиме Content-Security-Policy-Report-Only. Он не блокирует ресурсы; для отправки отчётов на сервер требуется отдельная настройка. После проверки перенесите рабочую политику в Content-Security-Policy.
Для встроенных скриптов используйте nonce или хеши вместо широкого разрешения unsafe-inline. Для HSTS сначала убедитесь в надёжной работе HTTPS и протестируйте небольшой max-age. Не добавляйте includeSubDomains или preload без проверки всех затронутых поддоменов.
Наличие заголовка само по себе не доказывает эффективность защ иты и не гарантирует улучшения позиций в поиске.
Часто задаваемые вопросы
Что такое HTTP-заголовки безопасности?
Самые простые улучшения безопасности - серверные заголовки, защищающие от XSS, кликджекинга, MIME-сниффинга и SSL-стриппинга. Большинство настраивается менее чем за час.
Почему HTTP-заголовки безопасности важно?
Успешная XSS-атака (предотвращаемая с помощью CSP) может привести к перехвату сессий, краже учётных данных и утечкам данных клиентов. По GDPR утечка данных может повлечь штрафы до 4% от мирового годового оборота. Отсутствие HSTS делает ваш сайт уязвимым для SSL-стриппинга - атаки «человек посередине», перехватывающей данные по незашифрованным соединениям.
Официальные источники
Похожие темы