Skip to content
EN

CSP: определение, синтаксис и примеры

Коротко:

CSP (Content Security Policy) — HTTP-заголовок, который защищает сайт от XSS. Декларирует whitelist источников скриптов, стилей, изображений, fonts. Современный CSP использует nonce для inline script'ов вместо unsafe-inline. Пример: default-src 'self'; script-src 'self' 'nonce-abc123'; object-src 'none'.

Проверить свой сайт →

Что такое CSP

CSP (Content Security Policy) — HTTP-заголовок, который защищает сайт от XSS. Декларирует whitelist источников скриптов, стилей, изображений, fonts. Современный CSP использует nonce для inline script'ов вместо unsafe-inline. Пример: default-src 'self'; script-src 'self' 'nonce-abc123'; object-src 'none'.

Проверить CSP онлайн

Используйте инструмент Enterno.io — введите домен, получите результат за 1-2 секунды. Бесплатно, без регистрации.

Проверить →

Что такое Content Security Policy (CSP)?

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

Основные директивы CSP

CSP использует набор директив, которые определяют, какие источники контента разрешены. Вот некоторые из основных директив:

  • default-src — задает базовые источники для всех типов контента.
  • script-src — определяет допустимые источники для JavaScript.
  • style-src — указывает источники для CSS.
  • img-src — задает источники для изображений.
  • connect-src — определяет источники для сетевых запросов (например, AJAX).

Пример директивы CSP, которая разрешает загрузку контента только с текущего домена и безопасных источников:

Content-Security-Policy: default-src 'self'; script-src 'self' https://trusted.cdn.com; style-src 'self' 'unsafe-inline';

Как настроить CSP: пошаговая инструкция

Настройка CSP может быть выполнена через HTTP-заголовки или мета-теги. Рекомендуется использовать HTTP-заголовки для большей безопасности. Вот пошаговая инструкция по настройке CSP через заголовки:

  1. Шаг 1: Определите необходимые директивы для вашего сайта, исходя из его архитектуры и используемых ресурсов.
  2. Шаг 2: Сформируйте политику CSP, используя директивы, которые вы выбрали. Например:
  3. Content-Security-Policy: default-src 'self'; img-src 'self' data: https://images.example.com;
  4. Шаг 3: Добавьте заголовок CSP в ваш веб-сервер. Например, для Apache это может выглядеть так:
  5. Header set Content-Security-Policy "default-src 'self'; img-src 'self' data: https://images.example.com;"
  6. Шаг 4: Протестируйте настройки CSP с помощью инструментов разработчика в браузере, чтобы убедиться, что все ресурсы загружаются корректно.
  7. Шаг 5: Постепенно внедряйте CSP, начиная с режима Report-Only, чтобы отслеживать ошибки без блокировки контента. Например:
  8. Content-Security-Policy-Report-Only: default-src 'self'; img-src 'self' data: https://images.example.com;

Правильная настройка CSP поможет защитить ваш сайт от многих угроз и повысит уровень доверия пользователей к вашему ресурсу.

Что такое Content Security Policy (CSP)?

Content Security Policy (CSP) — это механизм безопасности, который помогает предотвратить такие атаки, как межсайтовый скриптинг (XSS) и другие типы инъекций. CSP позволяет администраторам веб-сайтов контролировать, какие ресурсы могут загружаться и выполняться браузером. Это достигается путем задания политики в виде заголовка HTTP или тега <meta>, который определяет допустимые источники контента. Например, можно указать, что скрипты могут загружаться только с определенных доменов, что значительно снижает риск выполнения вредоносного кода.

Преимущества использования CSP

Использование Content Security Policy имеет множество преимуществ для веб-разработчиков и администраторов, включая:

  • Увеличение безопасности: CSP значительно сокращает вероятность атак, таких как XSS, путем ограничения источников загружаемого контента.
  • Контроль за ресурсами: Вы можете управлять тем, какие скрипты, стили и изображения могут загружаться, что позволяет избежать загрузки вредоносного контента.
  • Соответствие стандартам: CSP помогает соответствовать различным стандартам безопасности и регуляциям, что важно для многих организаций.

Кроме того, CSP предоставляет возможность мониторинга и отчетности. Вы можете настроить политику так, чтобы браузер отправлял отчеты о нарушениях в определенное место, что позволяет вам быстро реагировать на потенциальные угрозы.

Как настроить CSP: практический пример

Настройка Content Security Policy может показаться сложной, но на практике это довольно просто. Рассмотрим пример настройки CSP для веб-приложения. Для начала вам нужно определить, какие ресурсы ваше приложение будет использовать. Например, если ваше приложение использует скрипты с https://cdn.example.com и стили с https://fonts.googleapis.com, ваша политика может выглядеть следующим образом:

Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.example.com; style-src 'self' https://fonts.googleapis.com;

В этом примере default-src 'self' указывает, что по умолчанию ресурсы могут загружаться только с вашего собственного домена. script-src и style-src разрешают загружать скрипты и стили только с указанных доменов.

Чтобы добавить эту политику, вы можете использовать заголовок HTTP. Например, если вы используете сервер Nginx, добавьте следующую строку в конфигурацию вашего сайта:

add_header Content-Security-Policy "default-src 'self'; script-src 'self' https://cdn.example.com; style-src 'self' https://fonts.googleapis.com;";

После добавления заголовка не забудьте протестировать работу вашего приложения. Важно убедиться, что все необходимые ресурсы загружаются корректно. Вы также можете использовать инструменты разработчика в браузере, чтобы отслеживать любые ошибки, связанные с CSP.

Ошибки при настройке CSP и их исправление

При настройке Content Security Policy важно быть внимательным, так как неправильная конфигурация может привести к блокировке легитимного контента. Вот некоторые распространенные ошибки и способы их исправления:

  • Блокировка необходимых ресурсов: Если вы видите ошибки в консоли браузера, указывающие на блокировку скриптов или стилей, проверьте вашу политику и убедитесь, что все используемые вами ресурсы указаны в директивах script-src и style-src.
  • Отсутствие директивы report-uri: Для получения отчетов о нарушениях CSP добавьте директиву report-uri, указывающую на URL, куда будут отправляться отчеты. Например:
Content-Security-Policy: default-src 'self'; report-uri /csp-violation-report-endpoint;

Тестирование и мониторинг: После настройки CSP регулярно проверяйте отчеты о нарушениях и исправляйте возникающие проблемы. Это поможет вам поддерживать высокий уровень безопасности вашего веб-приложения.

Больше по теме

Часто задаваемые вопросы

Чем CSP отличается от других DNS/HTTP концепций?

Смотрите полный разбор в основной статье выше. Для быстрой проверки — используйте наш онлайн-чекер.

Нужно ли ручное обновление?

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

Запустить инструмент, который описан в этой статье

Бесплатный тариф — 10 мониторов, проверки каждые 5 мин, без карты. Платные тарифы — интервал от 1 минуты и проверки из нескольких регионов.