Content Security Policy (CSP) — механизм защиты в браузере, с помощью которого сайт указывает, откуда разрешено загружать скрипты, стили, фреймы и другой контент, ограничивая последствия атак внедрения.
Как работает CSP
Сервер передаёт политику в заголовке ответа HTTPContent-Security-Policy. После этого браузер отказывается загружать или выполнять всё, что политикой не разрешено. Важные директивы:
- default-src и script-src — разрешённые источники контента и JavaScript; встроенные скрипты блокируются, если у них нет подходящего nonce или хеша;
- ‘strict-dynamic’ — доверие скриптам, загруженным уже доверенными скриптами, что делает политики на основе nonce практичными;
- frame-ancestors — какие сайты могут встраивать страницу во фрейм;
- connect-src и form-action — куда страница может отправлять данные;
- report-to — куда отправляются отчёты о нарушениях.
По-русски CSP иногда называют политикой безопасности контента. Заголовок Content-Security-Policy-Report-Only позволяет проверить политику, ничего не блокируя. CSP стандартизирован W3C; актуальная версия — Level 3.
Почему CSP важна
CSP — дополнительный эшелон защиты от межсайтового скриптинга: даже если атакующему удалось внедрить тег script, браузер его не выполнит. Директива frame-ancestors предотвращает кликджекинг, а ограничение адресов для соединений мешает скиммерам формджекинга отправлять украденные данные карт на домены атакующих. Однако политика хороша ровно настолько, насколько хороши её правила: разрешение ‘unsafe-inline’ или целых CDN-доменов часто делает обход тривиальным.
Рекомендации
- Предпочитать строгие политики на основе nonce или хешей длинным белым спискам доменов.
- Избегать ‘unsafe-inline’ и ‘unsafe-eval’.
- Сначала внедрять политику в режиме report-only и отслеживать отчёты о нарушениях.
- Рассматривать CSP как дополнение к экранированию вывода и проверке входных данных, а не как их замену.





