Как настроить Content Security Policy для отчетов FastReport .NET WEB

10.07.2026

Content Security Policy (CSP) — ключевой инструмент защиты веб‑приложений от XSS‑атак, но его интеграция с отчётными системами нередко сопряжена со сложностями. В новых версиях FastReport .NET WEB архитектура клиентской части существенно переработана — это упрощает соблюдение строгой CSP без потери функциональности отчётов. В статье разберём, как грамотно настроить CSP для отчётов FastReport и учесть типичные риски.

 


 

Как работает CSP и зачем он нужен

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

Основная цель CSP — предотвращение атак Cross-Site Scripting (XSS) и внедрения вредоносного кода. Политика запрещает выполнение неподписанных или неразрешенных скриптов, даже если злоумышленнику удалось внедрить тег <script> в страницу. 

Дополнительно CSP может:

  • Ограничивать отправку данных на сторонние домены.
  • Контролировать использование eval() и подобных конструкций.
  • Блокировать загрузку нежелательных стилей, шрифтов или плагинов.

 


 

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

Директива Назначение Пример значения
default-src Источник по умолчанию для всех типов ресурсов 'self'
script-src Разрешённые источники JavaScript 'self' 'nonce-...'
style-src Разрешённые источники CSS 'self' 'unsafe-inline'
img-src Разрешённые источники изображений data: https:
connect-src Разрешённые адреса для fetch, XHR, WebSocket 'self' http: ws:
font-src Разрешённые источники шрифтов https://fonts.gstatic.com
object-src Разрешённые источники для <object>, <embed> 'none'
base-uri Ограничение URL для тега <base> 'self'
frame-ancestors Разрешённые родители для встраивания в iframe 'none'

 


 

Ключевые значения CSP

  • 'self' — только собственный домен (включая схему и порт).
  • 'unsafe-inline' — разрешить inline-скрипты и стили (требуется осторожность).
  • 'unsafe-eval' — разрешить eval() и подобные конструкции.
  • 'nonce-{value}' — одноразовый криптографический токен.
  • 'sha256-{hash}' — хеш содержимого inline-скрипта/стиля.
  • data: — разрешить data: URL (актуально для изображений).
  • https: — разрешить любые HTTPS-источники.

 


 

Пример включения CSP в приложениях ASP .NET Core:

app.Use(async (context, next) =>
{
	context.Response.Headers.ContentSecurityPolicy = "script-src 'self' 'unsafe-inline' 'unsafe-eval';style-src 'self' 'unsafe-inline'";
	await next();
});


Также это можно сделать в html разметке:

<meta http-equiv="Content-Security-Policy" 
      content="default-src 'self';
               script-src 'self';
               style-src 'self';
               img-src data: https:;
               object-src 'none';">

 


 

Изменения в архитектуре клиентской части FastReport .NET WEB

В последних версиях FastReport .NET WEB архитектура клиентской части была значительно переработана:

  • JavaScript-скрипты вынесены в статические файлы — больше не требуется указывать unsafe-inline для скриптов.
  • Стили элементов управления стали статическими CSS-файлами — это упрощает управление внешним видом.

Важное замечание об inline-стилях отчётов: стили, генерируемые для содержимого страниц отчёта (таблицы, текст, рамки), остаются inline. Для корректного отображения отчёта необходимо разрешить unsafe-inline в директиве style-src.

Вынос JS и CSS в статические файлы дал не только совместимость с CSP, но и возможность переопределять стили WebReport без изменения исходных файлов (например, через дополнительный CSS с более высоким приоритетом). Ещё расширилось поведение, теперь можно подключать свои скрипты, переопределять методы, добавлять обработчики. И конечно же улучшилось кеширование — браузер загружает статику один раз.

 


 

Сценарии обхода CSP и способы защиты

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

1. Слабая поддержка браузерами

Internet Explorer поддерживает CSP частично — может игнорировать ключевые директивы. Современные браузеры (Chrome, Opera, Safari, Firefox) работают корректно.

Решение: не полагайтесь только на CSP в устаревших браузерах — используйте дополнительные защитные механизмы.

2. JavaScript внутри автоматического iframe

При открытии текстового документа или изображения браузер может автоматически создать iframe-обертку. У такой страницы нет настроенного CSP, что позволяет выполнить вредоносный код.

Решение: настройте CSP для всех генерируемых страниц, включая загружаемые ресурсы.

3. Отсутствие CSP на страницах ошибок (4xx, 5xx)

Разработчики часто защищают только рабочие страницы, забывая про ошибки 404, 403, 500. Злоумышленник может внедрить скрипт в фрейм с такой страницей.

Решение: применяйте CSP глобально — через middleware или веб-сервер (Nginx, IIS, Apache).

4. Подгрузка скриптов с файлообменников

Некоторые сайты используют облачные хранилища (Яндекс.Диск, Google Drive) как источники контента. Злоумышленник может разместить там вредоносный файл или скрипт.

Решение: не используйте 'unsafe-inline' и https: в script-src, если это не критически необходимо. Вместо этого укажите конкретные домены: script-src 'self' https://trusted-cdn.com;

 


 

Итоги: безопасность, гибкость и производительность в новой версии FastReport .NET WEB

Таким образом новая версия FastReport .NET WEB позволяет безопасно использовать отчеты в приложениях с жесткой политикой CSP, минимизируя исключения вроде unsafe-inline. При этом разработчик получает:

  • Безопасность — защита от XSS-атак.
  • Гибкость — легкую кастомизацию внешнего вида и поведения.
  • Производительность за счет кэширования статики.

Внедряйте строгую CSP в своих проектах без ущерба для функциональности отчетов.

CSS FastReport HTML .NET WebReport
22 июня 2026

Как настроить отчет с Business Objects из кода и дизайнера в FastReport .NET

В этой статье рассматривается реальный пример создания и использования шаблона отчета .frx для подключения к иерархическим бизнес-объектам в FastReport .NET.
21 апреля 2026

Использование водяных знаков в FastReport VCL

В статье подробно рассмотрели функционал добавления водяных знаков в FastReport VCL — как через визуальный интерфейс, так и программно, с помощью кода на Delphi и в скриптах отчётов.
8 апреля 2026

Новые возможности работы с бэндами в дизайнере FastReport .NET

В версии 2026.2 FastReport .NET появилась возможность изменять порядок бэндов прямо в дизайнере — простым перетаскиванием мышью.

Не является публичной офертой
© 1998-2026 ООО «Быстрые отчеты»