CSP

30 января, 2026, 21:40

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

Возможности и ключевые директивы CSP:

  • Запрет на выполнение встроенных (inline) скриптов и стилей: Блокировка выполнения JavaScript, указанного непосредственно в HTML (например, в атрибутах onclick или тегах <script> без атрибута src), и встроенных CSS (<style>), что является наиболее эффективной мерой против XSS.
  • Контроль источников загрузки скриптов (script-src): Разрешение загрузки JavaScript только с указанных доменов. Поддержка хэшей ('sha256-...') или nonce-значений ('nonce-random123') для избирательного разрешения конкретных встроенных скриптов.
  • Контроль источников загрузки стилей (style-src): Аналогичное ограничение для CSS-файлов и встроенных стилей.
  • Ограничение источников для других типов ресурсов:
    • img-src — источники изображений.
    • font-src — источники шрифтов.
    • connect-src — ограничение доменов, к которым можно делать запросы через XMLHttpRequest, Fetch, WebSocket.
    • frame-src / child-src — источники для встраиваемых фреймов (iframe).
    • media-src — источники для аудио и видео.
    • object-src — источники для плагинов (например, Flash). Рекомендуется устанавливать в 'none'.
  • Защита от кликджекинга: Директива frame-ancestors определяет, каким сайтам разрешено встраивать текущую страницу во фрейм. Значение 'none' полностью запрещает встраивание, а 'self' разрешает только своему домену.
  • Отчётность о нарушениях: Директива report-uri (устаревшая) или report-to позволяет отправлять отчёты в указанный эндпоинт о попытках нарушить политику CSP. Это полезно для мониторинга и отладки.

CSP является мощным защитным механизмом последней линии обороны (defense-in-depth). Он не заменяет необходимость правильной валидации, экранирования вывода и кодирования входных данных, но существенно затрудняет эксплуатацию XSS, даже если уязвимость присутствует в коде.

CSP — это динамично развивающийся стандарт (уже есть CSP Level 3). Его правильная настройка требует усилий, но является обязательным элементом современного безопасного веб-приложения и рекомендована в руководствах OWASP.

Упоминания