Content security policy: ограничение источников скриптов

Автор: SKGROUPS Проверено редакцией Время чтения: 3 мин SEO продвижение

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

Что такое XSS и почему CSP важен?

XSS – это уязвимость, позволяющая злоумышленникам внедрять вредоносный код (обычно JavaScript) на веб-страницу, просматриваемую другими пользователями․ Этот код может использоваться для кражи учетных данных, перенаправления пользователей на вредоносные сайты или изменения содержимого страницы․ CSP помогает предотвратить XSS, определяя, откуда браузеру разрешено загружать ресурсы, такие как скрипты, стили и изображения․

Как работает CSP?

CSP работает путем отправки HTTP-заголовка Content-Security-Policy (или Content-Security-Policy-Report-Only для тестирования) вместе с ответом сервера․ Этот заголовок содержит директивы, которые указывают браузеру, какие источники ресурсов разрешены․ Если браузер обнаруживает, что ресурс загружается из источника, не указанного в политике, он блокирует загрузку этого ресурса и, возможно, сообщает об этом в консоль разработчика․

Директива script-src

Директива script-src является ключевой для ограничения источников скриптов․ Она определяет, откуда браузеру разрешено загружать JavaScript-файлы․ Вот несколько примеров использования script-src:

  • script-src 'self': Разрешает загрузку скриптов только с того же домена, что и сама страница․
  • script-src 'unsafe-eval': Разрешает использование функций eval и подобных․ Внимание: Использование 'unsafe-eval' также снижает эффективность CSP и рекомендуется избегать его․
  • script-src cdn․example․com: Разрешает загрузку скриптов только с домена cdn․example․com
  • script-src 'self' cdn․example․com: Разрешает загрузку скриптов с того же домена и с cdn․example․com
  • script-src 'nonce-{random-value}': Разрешает загрузку скриптов только с атрибутом nonce, соответствующим указанному случайному значению․ Это более безопасный способ разрешения встроенных скриптов, чем 'unsafe-inline'

Пример использования CSP

Вот пример HTTP-заголовка Content-Security-Policy, который разрешает загрузку скриптов только с того же домена и с cdn․example․com:

Content-Security-Policy: script-src 'self' cdn․example․com

Режим Report-Only

Прежде чем применять CSP в производственной среде, рекомендуется протестировать его в режиме Report-Only․ В этом режиме браузер не блокирует ресурсы, нарушающие политику, а только сообщает о них в консоль разработчика или отправляет отчеты на указанный URL․ Для этого используется заголовок Content-Security-Policy-Report-Only

Content Security Policy – это важный инструмент для повышения безопасности веб-приложений․ Ограничивая источники скриптов с помощью директивы script-src, вы можете значительно снизить риск атак XSS и других угроз безопасности․ Не забывайте тщательно тестировать свою политику CSP в режиме Report-Only, прежде чем применять ее в производственной среде․