Content Security Policy

Content Security Policy (CSP) является важной системой защиты веб-приложений, ограничивающей источники контента, которые браузер может загружать и выполнять. Angular поддерживает CSP через строгие практики кода и настройку безопасности в приложении.

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

  1. default-src Определяет базовый источник контента, если конкретные директивы не заданы. Например:

    default-src 'self';

    Это ограничивает загрузку ресурсов только с того же домена.

  2. script-src Ограничивает выполнение JavaScript. В Angular рекомендуется избегать использования eval и inline scripts, так как CSP запрещает их по умолчанию:

    script-src 'self';
  3. style-src Управляет источниками стилей. Для Angular важно использовать встроенные стили через шаблоны или внешние файлы, избегая unsafe-inline:

    style-src 'self' https://fonts.googleapis.com;
  4. img-src, font-src, connect-src Контролируют загрузку изображений, шрифтов и сетевых запросов. Например, подключение API или внешних сервисов требует явного указания источника.

Особенности работы CSP в Angular

  • Angular CLI генерирует проекты с возможностью интеграции CSP через мета-теги <meta http-equiv="Content-Security-Policy">.
  • Динамическая генерация шаблонов и биндинги к свойствам ([innerHTML]) должны быть безопасными. Для этого используется DomSanitizer, который очищает контент от потенциально опасных скриптов.
  • Инлайновые стили и скрипты запрещены, поэтому все анимации и логика должны выполняться через Angular API и файлы компонентов.
  • CSP позволяет предотвращать XSS-атаки, что критично для корпоративных приложений с высокой степенью защиты данных.

Интеграция CSP с анимациями

При использовании @angular/animations CSP не запрещает работу анимаций, так как они выполняются через Angular API и не используют eval или инлайновые скрипты. Однако любые сторонние библиотеки анимаций, вставляющие скрипты динамически, могут быть заблокированы. Необходимо проверять совместимость библиотек с CSP и использовать безопасные альтернативы.


Эти механизмы — временные функции анимаций и Content Security Policy — являются основой для создания современных, безопасных и отзывчивых приложений на Angular. Они обеспечивают как визуальную гибкость, так и защиту от потенциальных угроз безопасности.