HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Уязвимости > Веб-уязвимости
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Что такое Content Security Policy и зачем она нужна — кто сталкивался?
  #1  
Старый 24.06.2026, 00:40
Duppy22
Новичок
Регистрация: 15.02.2013
Сообщений: 2
С нами: 6967766

Репутация: 0
По умолчанию Что такое Content Security Policy и зачем она нужна — кто сталкивался?

Введение
Content Security Policy (CSP) — это реально одна из самых мощных и полезных штуковин, если ты занимаешься разработкой или администрированием веб-сайтов. Проще говоря, это политика безопасности, которую сайт "говорит" браузеру, чтобы тот строго контролировал, откуда можно подгружать и запускать скрипты, стили, шрифты, изображения и прочие ресурсы. Особенно полезна она, чтобы бороться с такими атаками, как XSS (межсайтовый скриптинг), когда злоумышленник пытается вставить в код сайта вредоносный скрипт и навредить пользователям.

Почему важно знать про CSP
Сайт без CSP — это как дом без замков в дверях. Можно, конечно, надеяться на добросовестность посетителей и свои внутренние проверки, но практика показывает, что злоумышленники постоянно ищут лазейки. CSP позволяет задавать чёткие правила, кто и что может запускаться на твоём сайте, тем самым снижая риск проникновения вредоносного кода.

Что такое CSP на самом деле
Технически это HTTP-заголовок, который сервер шлёт браузеру вместе со страницей. В заголовке прописывается набор разрешений (политик), откуда и что можно загружать — например, скрипты только с вашего домена, стили с доверенных CDN, шрифты с определённых источников и так далее. Если браузер видит ресурс, который не вписывается в эти правила, он просто блокирует загрузку и выполнение. Это резко сокращает возможность для атак.

Как выглядит CSP на практике
Давайте посмотрим пример простого CSP-заголовка:

Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.example.com; style-src 'self' 'unsafe-inline';

Здесь мы говорим:
- default-src 'self' — по умолчанию разрешаем загружать всё только с своего собственного домена, чтобы не брать нежелательные ресурсы извне;
- script-src 'self' https://cdn.example.com — скрипты можно брать либо со своего сайта, либо с CDN по указанному адресу;
- style-src 'self' 'unsafe-inline' — стили разрешены со своего сайта, а также допускается inline-стили (хотя это и не очень безопасно, но иногда необходимо для совместимости).

Как видите, можно гибко настроить политику под свои потребности.

Где CSP помогает
- Защита сайтов с пользовательским контентом — чтобы никто не вставил чёртов JavaScript и не начал воровать данные пользователей или делать неправомерные действия.
- Защита админок и личных кабинетов — уменьшается риск серьезных взломов через скрытые скрипты.
- Защита от атак на внешние библиотеки и CDN — если какая-то CDN взломана, можно ограничить загрузку только с доверенных источников.
- Отмена inline-скриптов и стилей — эта практика потом заставляет чистить код и работать официальными, проверенными способами.

Типичные ошибки при работе с CSP
- Лишнее доверие к 'unsafe-inline' и 'unsafe-eval' — это как открыть дверь для атакующих. Лучше обходиться без них или использовать nonce/hashes.
- Забытие о контенте, который грузится динамически — например, теги script создаются через JS, но не учтены в политике, из-за чего ресурсы могут блокироваться и ломаться важные функции.
- Чрезмерные ограничения — если закрутить систему слишком строго, сайт просто перестанет работать нормально, что решается только подробным тестированием.
- Некорректное добавление нескольких источников с ошибками в синтаксисе — браузер будет игнорировать всю политику или принимать её неверно.
- Невнимание к сообщениями в консоли — браузеры часто показывают предупреждения или ошибки CSP, и это важно отслеживать сразу.

Практический пример настройки CSP для простого блога
Допустим, у нас есть блог, где контент загружается на нашем домене и используется Google Fonts плюс скрипты с нашего CDN.

Можно сделать такой заголовок:

Content-Security-Policy: default-src 'self'; script-src 'self' https://mycdn.example.com; style-src 'self' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com;

Что мы делаем:
- default-src ограничивает по умолчанию до нашего домена;
- разрешаем скрипты только с домена и CDN;
- стили — с Google Fonts;
- шрифты — с Google Fonts тоже.

Такой вариант уже защищает от загрузки скриптов с подозрительных сайтов, а шрифты и стили официально разрешены.

Чек-лист по внедрению CSP
- Определить, какие ресурсы используются на сайте (скрипты, стили, шрифты, изображения, фреймы).
- Выяснить, с каких доменов они подгружаются.
- Составить базовую политику с default-src и конкретными правилами для script-src, style-src, img-src и font-src.
- Избегать unsafe-inline по возможности, использовать nonce или hash для inline-кода.
- Настроить CSP сначала в режиме "Report Only" для сбора ошибок и тестирования.
- Проверить консоль браузера на предупреждения CSP и исправить проблемы.
- Постепенно переводить CSP в режим блокировки (enforce).
- Не забывать обновлять политику при добавлении новых ресурсов на сайт.
- Добавить CSP-report-uri или report-to, чтобы получать отчёты о нарушениях.

FAQ
Вопрос: CSP — это только для защиты от XSS?
Ответ: Нет, CSP защищает не только от XSS, но и от внедрения любых нежелательных ресурсов — например, подмены стилей, шрифтов, картинок, а также кликджекинга и других опасностей.

Вопрос: Можно ли полностью запретить inline-скрипты?
Ответ: Да, и это рекомендуется делать. Однако если у вас есть инлайновый код, используйте nonce (одноразовые токены) или hash (хэш-сумму), чтобы этот код разрешить.

Вопрос: CSP сильно замедляет сайт?
Ответ: Нет, на производительность CSP почти не влияет, это просто набор правил для браузера. Но если политика слишком сложная, браузеру может немного сложнее её обрабатывать.

Вопрос: Какие браузеры поддерживают CSP?
Ответ: Практически все современные браузеры — Chrome, Firefox, Edge, Safari. Некоторые старые версии могут не поддерживать все директивы, но базовый функционал есть уже давно.

Вопрос: Если CSP сломал сайт, что делать?
Ответ: Переведите CSP в режим "Report Only", изучите предупреждения в консоли и по отчётам, исправьте политику. Главное — внедрять CSP постепенно и с тестированием, не влеплять строгие правила сразу на рабочий ресурс.

Заключение
CSP — это очень полезный инструмент, который помогает жестко контролировать, что именно браузер будет считать допустимыми ресурсами на сайте. Правильно настроенный CSP значительно повышает безопасность, особенно на сайтах с пользовательским контентом. Но его настройка требует внимательности, понимания технических деталей и тестирования. В итоге победа над XSS и другими атаками стоит потраченных усилий. Кто уже юзал CSP — делитесь опытом, подскажите лайфхаки, как не нарываться на грабли!
 
Ответить с цитированием
Ответ



Предыдущая тема Следующая тема

Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.