Что такое CSP?

CSP (Content Security Policy) — это заголовок, который задаёт браузеру список источников, откуда разрешено загружать скрипты, стили, шрифты, изображения и фреймы, а все прочие обращения блокирует.

CSP (Content Security Policy) дословно — «политика безопасности содержимого». Простыми словами: вы один раз прописываете правила, и браузер сам отсекает всё, что им противоречит, — например, чужой скрипт, внедрённый через дыру в форме комментариев. Бизнесу это нужно, чтобы не потерять деньги и трафик: взломанный сайт отдаёт клиентов мошенникам, а поисковики и антивирусы быстро помечают его как опасный.

Как работает CSP

Политика передаётся в ответе сервера как обычный заголовок HTTP — вместе с документами, скриптами и картинками. Браузер читает правила и ещё до отрисовки страницы решает, что можно исполнить, а что нужно заблокировать. Неподходящий ресурс просто не загрузится, а в консоли появится сообщение о нарушении.

Правила описываются директивами. Главная — default-src, она задаёт поведение по умолчанию. Дальше её уточняют:

  • script-src — откуда можно брать JavaScript;
  • style-src — источники CSS;
  • img-src, font-src, connect-src — картинки, шрифты, AJAX-запросы;
  • frame-ancestors — какие сайты вправе встраивать ваши страницы в iframe.

Значение 'self' разрешает только собственный домен, 'none' запрещает всё, а конкретные адреса перечисляются вручную. Инлайновые скрипты по умолчанию не работают: для них нужен nonce или hash. Именно это делает CSP барьером для XSS — даже если злоумышленник вставит код в пользовательский контент, браузер его не выполнит.

Зачем CSP нужен бизнесу

Основная задача — защита от XSS (межсайтового скриптинга). Это самый частый вектор атак: чужой код попадает на страницу и начинает воровать cookies, пароли и данные карт, подменять платёжные формы, показывать фишинговые баннеры.

Последствия для компании выходят далеко за пределы ИТ:

  • потеря заказов и доверия — клиенты уходят с «заражённого» сайта;
  • просадка позиций: поисковики помечают взломанные страницы как опасные и режут трафик;
  • штрафы и претензии, если утекли персональные данные;
  • требования стандартов и аудитов безопасности (PCI DSS, внутренние проверки) прямо предписывают CSP.

CSP работает в паре с другими механизмами. HTTPS шифрует канал и не даёт подменить содержимое по пути, но не остановит чужой скрипт, попавший в HTML изнутри. CSP закрывает именно эту дыру и внешне ничего не меняет для посетителя.

Как внедрять CSP

Главная ошибка — включить строгую политику сразу на боевом сайте и уронить половину функциональности. Рабочий порядок такой:

  1. Соберите инвентаризацию: какие скрипты, стили и шрифты реально используются — свои, аналитика, чаты, карты, реклама.
  2. Запустите заголовок Content-Security-Policy-Report-Only с директивой report-to: он ничего не блокирует, а только присылает отчёты о нарушениях.
  3. Постепенно ужесточайте правила: начните с default-src 'self' и добавляйте домены сторонних сервисов. Если часть файлов раздаёт CDN, его домен вносится в script-src и style-src отдельно.
  4. Переведите заголовок в боевой режим и настройте мониторинг отчётов.

К 2026 году стандартом стали подходы, которые упрощают жизнь: strict-dynamic позволяет доверять скриптам, подгруженным уже доверенным кодом, а Trusted Types в браузерах на Chromium запрещают вставлять HTML-строки без проверки. Полезен и SRI — контроль хеша внешнего файла.

Типичные ошибки

  • 'unsafe-inline' и 'unsafe-eval' «чтобы всё работало» — они обнуляют половину защиты;
  • разрешение * или https: целиком: политика формально есть, толку от неё нет;
  • забытые источники — карты, видео, чаты и платёжные виджеты отваливаются у клиентов;
  • тесты только на десктопе: мобильные вебвью и старые браузеры ведут себя иначе;
  • игнорирование отчётов: политику настроили и больше не смотрят, что она блокирует.

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

Вывод

CSP — недорогой и проверенный способ снизить риск XSS и защитить данные клиентов: заголовок настраивается один раз, а работает постоянно. Начинайте с режима отчётов, постепенно сужайте разрешения и следите за стандартами вроде strict-dynamic и Trusted Types. Тогда политика не сломает сайт, а станет надёжным фильтром для всего лишнего.

Дмитрий Дементьев
Генеральный директор
Рукводитель с опытом более 10 лет работы. Эксперт в области внедрения инновационных решений для крупного и среднего бизнеса.
Мы свяжемся с вами, ответим на интересующие вопросы и подготовим коммерческое предложение
Давайте работать
Оставьте заявку, после чего мы сможем собрать ключевые запросы, проверить позиции по ним, составить план продвижения и сделать вам предложение по продвижению сайта с гарантиями.
Ваш номер телефона *
Адрес вашего сайта
Антиспам вопрос: cколько будет 27 + 27 ?
Прикрепить список запросов
Только файлы Word, Excel, Блокнот
Оставить заявку

Смотрите другие материалы

LCP — отрисовка крупного контента
LCP (Largest Contentful Paint, отрисовка крупного контента) — метрика скорости загрузки, которая показывает, за сколько секунд на первом экране появляется…
Читать подробнее
JavaScript (JS)
JavaScript (JS) — язык программирования, который выполняется в браузере и делает веб-страницы интерактивными: от выпадающих меню и калькуляторов до целых…
Читать подробнее
Title (метатег)
Title (Title tag, метатег Title) — это HTML-элемент <title> в служебном разделе <head>, который задаёт название страницы: его видно во…
Читать подробнее
HSTS
HSTS (HTTP Strict Transport Security) — механизм безопасности, при котором браузер обращается к сайту только по HTTPS, а небезопасные http-адреса…
Читать подробнее
Яндекс Метрика
Яндекс Метрика (Yandex Metrica) — бесплатная система веб-аналитики от Яндекса. Счётчик на сайте собирает данные о визитах, источниках трафика, поведении…
Читать подробнее
Q&A
Q&A (Question & Answer) — формат контента «вопрос — ответ», а также отдельный тип страниц и микроразметки, которые помогают поисковым…
Читать подробнее

go to top

7 (933) 990-91-12

7 (931) 178-02-48

7 (933) 990-91-17

7 (933) 990-92-34

7 (933) 990-92-37