Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

SEC_HEADERS_MISSING Linux / DevOps

Настройка заголовков безопасности веб-сервера: HSTS, CSP, X-Frame-Options

Обновлено: 21.08.2026
  • Аудит безопасности (OWASP, Mozilla Observatory, SSL Labs) снижает рейтинг до 'F' из-за отсутствия security-заголовков.
  • Уязвимость веб-приложения к Clickjacking-атакам и внедрению XSS-скриптов.
  • Браузер отправляет незашифрованные HTTP-запросы до выполнения редиректа на HTTPS.

1. Эталонная настройка заголовков в Nginx

Добавьте директивы в блок server для HTTPS хоста:

server {
    listen 443 ssl http2;
    server_name secure.itstm.ru;

    # HSTS (форсирование HTTPS на 1 год включая поддомены и Preload)
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

    # Защита от Clickjacking (запрет встраивания в iframe)
    add_header X-Frame-Options "SAMEORIGIN" always;

    # Защита от MIME-sniffing
    add_header X-Content-Type-Options "nosniff" always;

    # Контроль передачи Referer
    add_header Referrer-Policy "strict-origin-when-cross-origin" always;

    # Ограничение доступа к API браузера (камера, микрофон, геолокация)
    add_header Permissions-Policy "geolocation=(), microphone=(), camera=()" always;

    # Базовая строгая политика CSP
    add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' https://cdn.jsdelivr.net; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self' data:;" always;
}

2. Настройка заголовков безопасности в Apache

В файле VirtualHost или .htaccess:

<IfModule mod_headers.c>
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
    Header always set X-Frame-Options "SAMEORIGIN"
    Header always set X-Content-Type-Options "nosniff"
    Header always set Referrer-Policy "strict-origin-when-cross-origin"
    Header always set Permissions-Policy "geolocation=(), microphone=(), camera=()"
    Header always set Content-Security-Policy "default-src 'self'; img-src 'self' data:;"
</IfModule>

3. Проверка заголовков ответа

curl -I https://secure.itstm.ru
💡 Практика специалистов: Помните: если в Nginx директива add_header объявлена во вложенном блоке 'location', она ПОЛНОСТЬЮ ПЕРЕОПРЕДЕЛЯЕТ и отменяет все заголовки add_header, заданные на уровне блока 'server'.

Частые вопросы (FAQ)

В чем опасность добавления директивы 'preload' в заголовок HSTS?

Если вы отправите домен в список HSTS Preload List Google/Mozilla, браузеры будут жестко требовать валидный SSL-сертификат. Если сертификат просрочится или сайт вернется на HTTP, открыть сайт будет невозможно до исключения из глобального списка (занимает месяцы).

Как протестировать CSP без блокировки контента на сайте?

Используйте заголовок Content-Security-Policy-Report-Only. Браузер не будет блокировать скрипты, а только отправит отчеты об ошибках на указанный report-uri.

Полезные материалы
Рекомендуем