Как настроить CSP?
DOM и браузер
CSP настраивают через HTTP-заголовок `Content-Security-Policy` (или meta-тег), задавая директивы источников для каждого типа ресурсов.
Как задать
HTTP-заголовок (предпочтительно)
Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.example.com; style-src 'self' 'unsafe-inline'; img-src *Meta-тег (если нет доступа к заголовкам)
<meta http-equiv="Content-Security-Policy" content="default-src 'self'">Основные директивы
- default-src — источник по умолчанию для всех типов.
- script-src — откуда грузить/выполнять скрипты.
- style-src, img-src, font-src, connect-src (fetch/XHR/WS), frame-src.
- frame-ancestors — кто может встраивать сайт в iframe (защита от clickjacking).
Значения источников
'self'— свой origin.'none'— запретить всё.- Конкретные домены,
*(осторожно). 'unsafe-inline','unsafe-eval'— разрешить инлайн/eval (ослабляет защиту, избегать для скриптов).- nonce/hash — разрешить конкретные инлайн-скрипты безопасно.
script-src 'self' 'nonce-abc123';
<script nonce="abc123">...</script>Внедрение
Начать в режиме Content-Security-Policy-Report-Only (только отчёты без блокировки), собрать нарушения, затем включить блокировку.
Коротко для собеседования
CSP задают заголовком Content-Security-Policy (или meta) с директивами источников: default-src, script-src, style-src, frame-ancestors и др. Избегать 'unsafe-inline'/'unsafe-eval', для нужных инлайн-скриптов — nonce/hash. Внедряют через Report-Only, затем включают блокировку.