Content Security Policy (CSP)

От каких угроз защищает CSP

УгрозаКак CSP помогаетКлючевая директива
XSS (встроенные скрипты)Блокирует inline JS (<script>alert()</script>) и eval() — выполняются только скрипты из белого спискаscript-src 'self' 'nonce-...'
XSS (внешний вредоносный JS)Запрещает загрузку скриптов с непроверенных доменов, даже если они появились на страницеscript-src https://cdn.example.com
ClickjackingЗапрещает встраивать страницу в <iframe> на чужом доменеframe-ancestors 'self'
Data injection / утечка данныхОграничивает домены, куда страница может делать fetch/XHRconnect-src 'self'
Кража ресурсов через CDN-подменуРазрешает загрузку стилей/картинок только с конкретных доменовstyle-src, img-src
Mixed Content (HTTP на HTTPS)Принудительно переводит все запросы на HTTPSupgrade-insecure-requests

Основные атаки и security-заголовки

Атака / механизмЧто этоКак защищаться / зачем нужно
XSSВнедрение и выполнение чужого JS в страницеЭкранирование данных, CSP, не вставлять сырой HTML
CSRFЗапрос от имени юзера без его ведомаCSRF-токены, SameSite-cookie, проверка Origin/Referer
SQL-injectionВнедрение SQL в запросы к БДПодготовленные выражения на бэкенде, валидация ввода
ClickjackingОбман с кликом через чужой iframeЗаголовки X-Frame-Options, CSP frame-ancestors
Content-Security-PolicyПолитика, ограничивающая, откуда можно грузить скрипты/ресурсыСужает поверхность XSS, запрещает инлайновый/левый JS
X-Frame-Options / frame-ancestorsЗапрет встраивать сайт в iframe других сайтовЗащита от clickjacking
Strict-Transport-Security (HSTS)Заставляет браузер использовать только HTTPSЗащита от даунгрейда на HTTP, MITM на уровне протокола
X-Content-Type-OptionsЗапрещает браузеру «угадывать» тип контента (MIME-sniffing)Помогает избежать выполнения данных как скрипта

См. также