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