Что такое Content Security Policy и как её внедрять?
Заголовки и политики браузера
Content Security Policy (CSP) — заголовок ответа, в котором сайт перечисляет, откуда браузеру разрешено загружать скрипты, стили, картинки и другие ресурсы. Всё остальное браузер блокирует.
Основные директивы
default-src 'self'— по умолчанию только свой домен.script-src— источники скриптов.style-src,img-src,connect-src(для fetch и WebSocket),frame-ancestors.'nonce-...'или'sha256-...'— разрешить конкретный inline-скрипт, не открывая'unsafe-inline'.
Content-Security-Policy:
default-src 'self';
script-src 'self' 'nonce-r4nd0m';
img-src 'self' data: https://cdn.example.com;
connect-src 'self' https://api.example.com;
frame-ancestors 'self'Как внедрять безопасно
- Начать с
Content-Security-Policy-Report-Only: браузер ничего не блокирует, но присылает отчёты о нарушениях. - Разобрать отчёты, убрать inline-скрипты, добавить нужные источники.
- Включить боевой режим.
Ограничения
CSP снижает ущерб от XSS, но не заменяет экранирование. Слишком широкие правила (*, unsafe-inline, unsafe-eval) сводят защиту к нулю.
Коротко для собеседования
CSP — белый список источников ресурсов. Внедряют через Report-Only, используют nonce вместо unsafe-inline.