МИГ
13.06.2026, 16:00
Все слышали про заголовки безопасности вроде Content-Security-Policy, но каждый второй разработчик задумчиво смотрит на них, когда дело доходит до настройки. Я тоже сначала думал: «Слишком сложно, зачем заморачиваться?» Но потом пару раз попадал на баги из-за отсутствия хотя бы базовых заголовков — и понял, что это must-have.
Вот мой личный чек-лист, с которым проще стартовать или проверить уже готовый сайт.
1. Content-Security-Policy (CSP)
Сработает как фильтр для всех скриптов и стилей. Почти всегда спасает от XSS и подгрузки стороннего контента. Советую начать с режима Report-Only, чтобы понять, что ломается, и постепенно ужесточать правила.
2. X-Content-Type-Options: nosniff
Нужен, чтобы браузер не пытался угадывать MIME-тип и не запускал неправильные файлы. Попадал на сайты, где из-за отсутствия этого заголовка ломались стили и запускался чужой JS.
3. X-Frame-Options
Защищает от iframe-атаки (clickjacking). По дефолту ставлю DENY или SAMEORIGIN — редко кто об этом думает, а между тем это простой способ не дать вклиниться чужому сайту.
4. Strict-Transport-Security (HSTS)
Заставляет браузер всегда использовать HTTPS. Если настроить правильно, уберёт кучу проблем с подменой трафика. Только не забудьте выключить для локалки или тестовых окружений.
5. Referrer-Policy
Управляет тем, какие данные о переходах передаются на внешние сайты. Тут дело вкуса, но базовый вариант — no-referrer-when-downgrade — подойдет многим.
6. Feature-Policy / Permissions-Policy (текущая версия)
Подключайте, чтобы контролировать доступ к камере, микрофону и другим фичам браузера. Часто забывают, но лишние разрешения — прямой путь к проблемам.
Лично я заметил, что когда начинаешь системно вводить хотя бы эти заголовки, сразу снижается количество мелких багов с загрузкой скриптов и внезапными ошибками безопасности на стороне клиента. Особенно CSP — если её правильно сконфигурировать, то улучшается контроль над сторонними библиотеками и снижается риск XSS из-за плагинов.
Вот мой личный чек-лист, с которым проще стартовать или проверить уже готовый сайт.
1. Content-Security-Policy (CSP)
Сработает как фильтр для всех скриптов и стилей. Почти всегда спасает от XSS и подгрузки стороннего контента. Советую начать с режима Report-Only, чтобы понять, что ломается, и постепенно ужесточать правила.
2. X-Content-Type-Options: nosniff
Нужен, чтобы браузер не пытался угадывать MIME-тип и не запускал неправильные файлы. Попадал на сайты, где из-за отсутствия этого заголовка ломались стили и запускался чужой JS.
3. X-Frame-Options
Защищает от iframe-атаки (clickjacking). По дефолту ставлю DENY или SAMEORIGIN — редко кто об этом думает, а между тем это простой способ не дать вклиниться чужому сайту.
4. Strict-Transport-Security (HSTS)
Заставляет браузер всегда использовать HTTPS. Если настроить правильно, уберёт кучу проблем с подменой трафика. Только не забудьте выключить для локалки или тестовых окружений.
5. Referrer-Policy
Управляет тем, какие данные о переходах передаются на внешние сайты. Тут дело вкуса, но базовый вариант — no-referrer-when-downgrade — подойдет многим.
6. Feature-Policy / Permissions-Policy (текущая версия)
Подключайте, чтобы контролировать доступ к камере, микрофону и другим фичам браузера. Часто забывают, но лишние разрешения — прямой путь к проблемам.
Лично я заметил, что когда начинаешь системно вводить хотя бы эти заголовки, сразу снижается количество мелких багов с загрузкой скриптов и внезапными ошибками безопасности на стороне клиента. Особенно CSP — если её правильно сконфигурировать, то улучшается контроль над сторонними библиотеками и снижается риск XSS из-за плагинов.