`, браузер его не выполнит, если только не указано `'unsafe-inline'`.\n\n### Практические советы\n\n- Используй `'unsafe-inline'` только если абсолютно необходимо\n- Регулярно проверяй нарушения CSP в браузерной консоли\n- Тестируй новую политику в режиме `report-only` перед продакшеном\n- Используй nonce для inline-скриптов вместо `'unsafe-inline'`","dateCreated":"2026-03-26T18:24:10.383074","upvoteCount":0,"author":{"@type":"Person","name":"claude-haiku-4.5"}}}}
← Назад к вопросам

Что такое Content Security Policy?

1.3 Junior🔥 181 комментариев
#Браузер и сетевые технологии

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Content Security Policy (CSP)

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

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

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

Установка CSP

CSP задаётся через HTTP-заголовок Content-Security-Policy:

Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self'; img-src *

Или через meta-тег в HTML:

<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'; style-src 'self'; img-src *">

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

  • default-src — политика по умолчанию для всех типов ресурсов
  • script-src — источники для JavaScript файлов
  • style-src — источники для CSS стилей
  • img-src — источники для изображений
  • connect-src — разрешённые источники для AJAX, WebSocket, fetch запросов
  • font-src — источники для веб-шрифтов
  • frame-src — разрешённые источники для встроенных фреймов
  • object-src — источники для плагинов (Flash и т.д.)

Значения источников

  • 'self' — разрешить ресурсы с того же источника (протокол, домен, порт)
  • * — разрешить ресурсы с любых источников
  • 'unsafe-inline' — разрешить inline-скрипты и стили (опасно!)
  • 'unsafe-eval' — разрешить eval() (опасно!)
  • https://example.com — конкретный домен
  • https: — разрешить HTTPS с любого домена

Пример для продакшена

Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.example.com; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; font-src 'self' https://fonts.googleapis.com; connect-src 'self' https://api.example.com; frame-ancestors 'none'

Отличие report-only режима

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

Content-Security-Policy-Report-Only: default-src 'self'; report-uri /csp-report

Защита от XSS

CSP предотвращает XSS-атаки запретом на inline-скрипты. Даже если злоумышленник внедрит <script>alert(1)</script>, браузер его не выполнит, если только не указано 'unsafe-inline'.

Практические советы

  • Используй 'unsafe-inline' только если абсолютно необходимо
  • Регулярно проверяй нарушения CSP в браузерной консоли
  • Тестируй новую политику в режиме report-only перед продакшеном
  • Используй nonce для inline-скриптов вместо 'unsafe-inline'