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/XHR | connect-src 'self' |
| Кража ресурсов через CDN-подмену | Разрешает загрузку стилей/картинок только с конкретных доменов | style-src, img-src |
| Mixed Content (HTTP на HTTPS) | Принудительно переводит все запросы на HTTPS | upgrade-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) | Помогает избежать выполнения данных как скрипта |