Безопасность скрипта отчёта

07.09.2020

FastReport .NET поддерживает вычисление выражений для отображения значений в нужном виде, либо каких-либо условий видимости того или иного объекта. Также есть возможность обработки событий для каждого объекта отчёта, например, перед его печатью. Обработчики событий помещаются в скрипт отчёта, который поддерживает языки C# и VB.NET. Кроме обработки событий в скрипте могут быть практически любые вычисления или действия, которые могут сформировать нужные данные или изменить поведение отчёта, как это требуется разработчику шаблона отчёта.

Генератор отчётов перед построением учитывает все выражения, функции, обращения к параметрам в отчёте и строит программу на языке скрипта отчёта. Затем программа объединяется с тем скриптом, который мог написать разработчик шаблона отчёта. Полученный скрипт компилируется и загружается в виде библиотеки в приложение, которое работает с генератором отчётов.

Безопасность скрипта отчёта

При запуске отчётов в веб-приложениях есть возможность их редактирования с помощью Online Designer. Редактирование отчётов осуществляется с помощью браузера, отредактированный отчёт отправляется на сервер и затем там может быть построен.

Пока отчёты редактируются доверенными разработчиками и исполняются в изолированной среде, возможности применения скриптов в отчётах дают свободу и практически неограниченные возможности при обработке и визуализации данных. Их редактирование и исполнение находится под контролем. Как только появляется возможность всеобщего доступа к редактированию отчётов посредством браузера и Online Designer, возникает вопрос безопасности построения отчётов на сервере. Становится возможным внедрение вредоносного кода в скрипт и выражения отчёта.

Безопасность скрипта отчёта

Чтобы предотвратить выполнение вредоносного кода в скрипте и выражениях отчёта при работе их в вебе, в версии FastReport .NET 2020.3.22 были добавлены специальные средства безопасности. Изменения касаются FastReport .NET, FastReport .NET Core, FastReport Mono и FastReport Open Source.

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

bool FastReport.Utils.Config.EnableScriptSecurity – включает или отключает проверку скрипта отчёта. Работает только при работе отчётов в веб-приложениях (FastReport.Utils.Config.WebMode == true). Значение по умолчанию – true (включено).

event FastReport.Utils.Config.OnEnableScriptSecurityChanged – событие вызывается, когда EnableScriptSecurity был изменён. Может быть использовано для дополнительного контроля безопасности.

FastReport.Web.WebReport.SetScriptSecurity(IScriptChecker scriptChecker) - устанавливает пользовательскую реализацию метода проверки, которая перекрывает встроенные методы контроля безопасности.

ScriptSecurityProperties FastReport.Utils.Config.ScriptSecurityProps - параметры для настройки проверки безопасности скрипта. Содержит значение NULL если исполняется не веб-приложение (FastReport.Utils.Config.WebMode == false).

bool FastReport.Utils.Config.ScriptSecurityProps.AddStubClasses – включает или отключает добавление классов заглушек для скрипта. Значение по умолчанию – true (включено). Не перекрывается установкой собственного обработчика SetScriptSecurity (см. выше).

event FastReport.Utils.Config.ScriptSecurityProps.OnStopListChanged – событие вызывается, когда StopList был изменён. Может быть использовано для дополнительного контроля безопасности.

string[] FastReport.Utils.Config.ScriptSecurityProps.StopList - список ключевых слов, которые не должны быть использованы в скрипте отчёта. Содержит список слов по умолчанию.

FastReport.Utils.Config.ScriptSecurityProps.SetDefaultStopList() - устанавливает значение списка StopList по умолчанию (сбрасывает изменения).

Разработанный комплекс защиты скрипта отчёта позволяет минимизировать угрозу внедрения вредоносного кода и его исполнения на стороне сервера.

Безопасность скрипта отчёта

Нужно помнить, что даже применение встроенных средств контроля безопасности скрипта отчёта не даёт стопроцентной защиты от внедрения вредоносного кода в сохраняемые шаблоны. Поэтому настоятельно рекомендуем вести журналы доступа в веб-приложениях и разрешать редактирование шаблонов отчётов ограниченному кругу привилегированных пользователей.

4 октября 2023

Как из приложения ASP.NET Core сформировать отчет с использованием FastReport.Core.Skia

Рассказываем как сформировать отчет на Windows и Linux с использованием FastReport.Core.Skia и приватного NuGet сервера.
22 марта 2023

Создание PDF отчета в JetBrains Rider (C#) на «Альт Рабочая станция К» 10

В этой статье мы взглянем на платформу .NET в «Альт Рабочая станция К» 10 и создадим отчет, который можно экспортировать в PDF.
14 февраля 2023

Как настроить веб-сервер Apache2 для FastReport .NET

Запускаем веб-сервер Apache2 в операционной системе Linux для FastReport .NET и .NET 5 с помощью нескольких простых команд.