CSP

3 года назад

Nikolai Gagarinov

Ответы

1

CSP — это политика безопасности, которая задает допустимые источники загрузки данных для веб-страниц. Механизм ограничивает выполнение кода и получение ресурсов, не входящих в перечень доверенных доменов, что снижает риск XSS и связанных атак. Стандарт формирует набор правил, который браузер применяет при обработке страниц. Любой элемент, не соответствующий политике, блокируется.

Назначение и принципы работы CSP

Основная задача CSP — устранение неконтролируемого доступа к сторонним ресурсам. Несмотря на действие политики одинакового источника, большинство сайтов подключают внешние скрипты, изображения, аналитические сервисы и CDN. Это открывает возможность внедрения вредоносного контента. CSP формирует перечень разрешенных доменов и указывает браузеру, какие типы данных можно загружать и исполнять.

Политика передается через HTTP-заголовок Content-Security-Policy. На странице могут быть объявлены отдельные директивы, каждая из которых определяет разрешенные источники для конкретного типа контента. Если явно прописанных правил нет, применяется значение из резервной директивы.

CSP использует принцип запрета по умолчанию. Браузер выполняет только то, что явно разрешено. Это исключает загрузку ресурсов из непроверенных источников и минимизирует влияние внедренного кода.

Основные директивы CSP

Директивы формируют независимые наборы разрешений. Каждая отвечает за определенный тип контента:

  • img-src — изображения;

  • media-src — видео, аудио и анимация;

  • script-src — скрипты и сценарии;

  • frame-src — встраиваемые элементы и фреймы;

  • default-src — резервный список источников, используемый при отсутствии частных правил.

Директивы могут включать домены, поддомены или конкретные URL. Перечень допускает использование операторов и специальных значений. Каждая часть конфигурации применяется только к своему типу контента. Значения из одной директивы не наследуются другой.

Базовые правила указания источников

CSP допускает использование ключевых слов:

  • none — полный запрет загрузки;

  • self — разрешение только текущему домену;

  • unsafe-inline — включение инлайновых стилей, скриптов и обработчиков событий;

  • unsafe-eval — разрешение динамического выполнения кода.

Инлайновые конструкции считаются потенциально опасными, поэтому без явного разрешения они блокируются. Отключение динамических вызовов способствует предотвращению подмены сценариев и внедрения вредоносных функций.

Для проверки политики без фактического ограничения работы сайта применяется заголовок Content-Security-Policy-Report-Only. В этом режиме нарушения фиксируются и отправляются на сервер, но не приводят к блокировке.

Примеры конфигураций CSP

Простое ограничение источников только основным доменом:

Content-Security-Policy: default-src 'self'

Разрешение доверенному домену и всем его поддоменам:

Content-Security-Policy: default-src 'self' *.trusted.com

Одновременный контроль нескольких типов контента:

Content-Security-Policy: default-src 'self';
img-src *;
media-src media1.com media2.com;
script-src userscripts.example.com

В этом случае изображения доступны из любых источников, медиафайлы — только с указанных доменов, а выполнение скриптов ограничено одним доверенным сервером.

Атаки, от которых защищает CSP

XSS (межсайтовый скриптинг)

XSS основан на внедрении сценария, выполняемого от имени доверенного источника. Если сайт загружает контент без проверки, вредоносный код выполняется напрямую. CSP исключает загрузку незаявленных ресурсов и предотвращает выполнение сторонних скриптов.

Перехват данных при передаче

Вредоносный код может вмешиваться в сетевую активность, перехватывая потоки данных. CSP ограничивает использование ненадежных протоколов и требует передачи cookie в безопасном режиме. Стандарт усиливается заголовком HSTS, который принудительно переводит соединение в HTTPS.

Типы содержимого, представляющие риск

Опасность исходит не только от данных, но и от способов их обработки. Контент может функционировать через отдельные скрипты и стили, а злоумышленники используют эти механизмы как транспорт для внедрения кода. Условно выделяются группы потенциально опасных элементов:

  • скрипты — автоматизация действий на странице;

  • изображения — файлы отображаются с использованием сценариев загрузки;

  • стили — описание визуальных параметров, через которые можно нарушить работу интерфейса;

  • медиа — воспроизведение управляется обработчиками;

  • шрифты — текстовые файлы, способные содержать вредоносные вставки;

  • объекты и плагины — расширения сторонних сервисов;

  • фреймы — внешние страницы в составе основной страницы;

  • манифесты — ресурсы веб-приложений, включающие сторонние зависимости.

Каждый тип данных сопровождается отдельным набором скриптов и стилей, поэтому ограничения должны быть точечными.

Уязвимости CSP и причины обхода политики

Несмотря на строгий механизм контроля, CSP может быть обойден при некорректной реализации. Большинство проблем связано не со стандартом, а с неверной настройкой.

Выполнение JavaScript внутри автоматически созданных фреймов

Когда изображение или текстовый документ открывается браузером, он преобразует его в HTML-страницу, размещенную во iframe. Такой документ не содержит собственной политики безопасности. Встроенный скрипт выполняется без ограничений, создавая угрозу.

Отсутствие CSP на страницах с ошибками

Часто политики применяют только к рабочим страницам. Если злоумышленник внедряет контент в страницу ошибки 404 или 4xx, браузер может выполнить вредоносный сценарий. Политика должна распространяться на весь сайт.

Загрузка сценариев с облачных хранилищ

Некоторые проекты используют файлообменники как источник кода или данных. Если в облаке размещен вредоносный файл, сайт загрузит его как доверенный ресурс. Это нарушает принцип контроля происхождения контента.

Неполное покрытие ресурсов

Если в политике разрешен широкий перечень доменов или используются опасные ключевые слова, вероятность обхода повышается. Ошибка в одном значении может отменить защиту.

Значение корректного внедрения CSP

Стандарт надежен при строгом соблюдении правил. Грамотная конфигурация исключает внедрение сторонних скриптов, ограничивает неконтролируемые источники контента и снижает риск атаки через ресурсы, участвующие в построении страницы. CSP работает только в комплексе с другими механизмами — безопасными протоколами, корректной обработкой пользовательских данных и регулярным аудитом конфигураций.

месяц назад

Nikolai Gagarinov

0

CSP (Content Security Policy) - это механизм, который позволяет веб-разработчикам контролировать, какие ресурсы могут быть загружены на страницу. С помощью CSP можно запретить загрузку определенных типов ресурсов, таких как скрипты, шрифты или стили, а также ограничить использование некоторых функций, таких как eval() или URL-сценарии. Это помогает повысить безопасность веб-приложения и предотвратить атаки на уязвимости, связанные с этими функциями.

2 года назад

Елена Редькина