Жёсткая CSP, включённая сразу, легко ломает аналитику, редактор или авторизацию. Начните с Content-Security-Policy-Report-Only: браузер сообщит нарушения, но не заблокирует ресурс.
Начальная политика
Content-Security-Policy-Report-Only: default-src 'self'; base-uri 'self'; object-src 'none'; frame-ancestors 'self'; form-action 'self'; img-src 'self' data: https:; script-src 'self'; style-src 'self' 'unsafe-inline'; report-to csp-endpoint
Создайте endpoint, который принимает только ограниченный JSON, не требует cookie, имеет rate limit и не пишет URL с токенами целиком. report-to настраивается отдельным заголовком Reporting-Endpoints.
Разбор
Собирайте отчёты несколько дней на всех важных маршрутах. Для каждого источника решите: он необходим, можно перенести файл к себе, использовать nonce/hash или удалить интеграцию. Не добавляйте * и unsafe-eval только ради исчезновения ошибок.
После очистки переключите политику в блокирующий Content-Security-Policy, оставив мониторинг. Проверьте вход, OAuth callback, редактор, загрузку файлов, тёмную тему и мобильную версию.
CSP снижает последствия XSS, но не исправляет сам XSS и не заменяет экранирование пользовательского содержимого.
Официальные источники