Content Security Policy: Защита от default-src

Content Security Policy (CSP) – мощный механизм безопасности, позволяющий контролировать ресурсы, которые браузер может загружать для веб-страницы. Это критически важно для защиты от различных видов атак, таких как Cross-Site Scripting (XSS). В этой статье мы подробно рассмотрим директиву default-src и способы ее эффективного использования для повышения безопасности вашего веб-приложения.

Что такое default-src?

default-src – это директива CSP, которая определяет политику по умолчанию для всех типов ресурсов, для которых не указаны более конкретные директивы. Другими словами, если вы не указали, откуда браузер может загружать, например, скрипты, изображения или стили, default-src определяет источник по умолчанию.

Важно понимать: default-src действует как «fallback» для других директив. Если для конкретного типа ресурса (например, script-src) не задана политика, то будет применена политика, определенная в default-src.

Пример использования default-src

Рассмотрим пример:

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

В этом случае, политика разрешает загрузку ресурсов только с того же домена, с которого загружена сама страница ('self'). Это означает, что скрипты, стили, изображения и другие ресурсы должны быть размещены на том же сервере, что и веб-страница.

Почему default-src важна для безопасности?

default-src играет ключевую роль в снижении риска XSS-атак. XSS-атаки происходят, когда злоумышленник внедряет вредоносный код (обычно JavaScript) на веб-страницу, который затем выполняется в браузере пользователя; Правильно настроенная default-src может значительно ограничить возможности злоумышленника, запретив загрузку скриптов с неизвестных или ненадежных источников.

Без default-src, браузер по умолчанию будет загружать ресурсы с любого источника, что делает веб-приложение уязвимым для XSS.

Рекомендации по настройке default-src

Настройка default-src требует внимательного подхода. Вот несколько рекомендаций:

  1. Начните с ‘self’: В качестве отправной точки рекомендуется использовать default-src 'self';. Это обеспечит базовый уровень защиты, разрешая загрузку ресурсов только с вашего домена.
  2. Постепенно добавляйте доверенные источники: Если вашему веб-приложению необходимо загружать ресурсы с других доменов (например, CDN для JavaScript-библиотек или шрифтов), добавляйте эти источники в соответствующие директивы (script-src, font-src и т.д.). Не используйте default-src для разрешения загрузки ресурсов с произвольных источников.
  3. Тестируйте политику: Перед внедрением CSP в production, тщательно протестируйте ее в тестовой среде, чтобы убедиться, что она не нарушает функциональность вашего веб-приложения. Используйте режим «report-only» для мониторинга нарушений политики без блокировки ресурсов.

Примеры более сложных конфигураций

Вот несколько примеров более сложных конфигураций default-src:

  • Content-Security-Policy: default-src 'self' https://cdn.example;com; – Разрешает загрузку ресурсов с вашего домена и с CDN example.com.
  • Content-Security-Policy: default-src 'self' 'unsafe-inline' 'unsafe-eval'; – Не рекомендуется! Разрешает загрузку inline скриптов и использование eval. Это значительно снижает безопасность вашего веб-приложения. Используйте только в крайнем случае и только после тщательного анализа рисков.

Инструменты для тестирования CSP

Существует множество инструментов, которые помогут вам протестировать и отладить вашу CSP:

  • CSP Evaluator: https://csp-evaluator.withgoogle.com/
  • SecurityHeaders.com: https://securityheaders.com/

default-src – важная директива CSP, которая позволяет контролировать ресурсы, загружаемые вашим веб-приложением. Правильно настроенная default-src может значительно повысить безопасность вашего приложения, снизив риск XSS-атак. Начните с ‘self’, постепенно добавляйте доверенные источники и тщательно тестируйте вашу политику, чтобы обеспечить максимальную защиту.