FastReport .NET unterstützt die Berechnung von Ausdrücken für die Anzeige von Werten in der gewünschten Form oder von beliebigen Objektsichtbarkeitsbedingungen. Es ist auch möglich, Ereignisse für jedes Objekt des Berichtes zu verarbeiten, z.B. vor dem Drucken. Ereignisbehandler werden in einem Berichtsskript platziert, das die Programmiersprachen C# und VB.NET unterstützt. Zusätzlich zur Ereignisverarbeitung kann das Skript fast alle Berechnungen oder Aktionen enthalten, die die erforderlichen Daten erzeugen oder das Verhalten des Berichts ändern können, wie es vom Entwickler der Berichtsvorlage gefordert wird.
Bevor das Programm in der Berichtsskriptsprache erstellt wird, berücksichtigt der Berichtsgenerator alle Ausdrücke, Funktionen und Aufrufe von Parametern im Bericht. Dann wird das Programm mit dem Skript kombiniert, das der Entwickler der Berichtsvorlage geschrieben hatte. Das resultierende Skript wird kompiliert und als Bibliothek in die Anwendung geladen, die mit dem Berichtsgenerator arbeitet.
Wenn Sie Berichte in Webanwendungen ausführen, können Sie sie mit dem Online Designer bearbeiten. Die Bearbeitung erfolgt über einen Browser, der bearbeitete Report wird an den Server gesendet und kann dort erstellt werden.
Während Berichte von vertrauenswürdigen Entwicklern bearbeitet und in einer isolierten Umgebung ausgeführt werden, gibt Ihnen die Möglichkeit, Skripte in Berichten zu verwenden, Flexibilität und nahezu unbegrenzte Möglichkeiten zur Datenverarbeitung und Visualisierung. Die Bearbeitung und Ausführung ist unter Kontrolle. Sobald die Möglichkeit eines allgemeinen Zugriffs auf die Bearbeitung von Berichten über den Browser und den Online-Designer erscheint, stellt sich die Frage nach der Sicherheit der Gebäudeberichte auf dem Server. Es wird möglich, bösartigen Code in Skript- und Berichtsausdrücke einzufügen.
Um die Ausführung von schädlichem Code in den Skript- und Reportausdrücken bei der Arbeit im Web zu verhindern, wurden in FastReport.NET 2020.3.22 spezielle Sicherheitsfunktionen hinzugefügt. Die Änderungen betreffen FastReport .NET, FastReport .NET Core, FastReport Mono und FastReport Open Source.
Sicherheitsfunktionen sind standardmäßig aktiv, aber Entwickler können sie nach Bedarf in ihren Anwendungen ändern oder deaktivieren.
Neue Eigenschaften und Methoden:
bool FastReport.Utils.Config.EnableScriptSecurity – aktiviert oder deaktiviert die Überprüfung des Berichtsskripts. Funktioniert nur, wenn Berichte in Webanwendungen ausgeführt werden.
(FastReport.Utils.Config.WebMode == true). Diese Eigenschaft ist standardmäßig auf True gesetzt. (enabled).
event FastReport.Utils.Config.OnEnableScriptSecurityChanged – das Ereignis wird ausgelöst, wenn EnableScriptSecurity geändert wurde. Kann für zusätzliche Sicherheitskontrollen verwendet werden.
FastReport.Web.WebReport.SetScriptSecurity(IScriptChecker scriptChecker) - Installiert eine benutzerdefinierte Implementierung einer Verifizierungsmethode, die die integrierten Sicherheitskontrollen außer Kraft setzt.
ScriptSecurityProperties FastReport.Utils.Config.ScriptSecurityProps - Parameter zum Konfigurieren der Skript-Sicherheitsprüfung. Wird auf NULL gesetzt, wenn eine Nicht-Web-Anwendung läuft. (FastReport.Utils.Config.WebMode == false).
bool FastReport.Utils.Config.ScriptSecurityProps.AddStubClasses – aktiviert oder deaktiviert das Hinzufügen von Stub-Klassen für das Skript. Diese Eigenschaft ist standardmäßig auf True gesetzt (enabled). Nicht durch Setzen eines eigenen SetScriptSecurity-Handlers überschrieben (see above).
event FastReport.Utils.Config.ScriptSecurityProps.OnStopListChanged – das Ereignis wird aufgerufen, wenn die StopList geändert wurde. Kann für zusätzliche Sicherheitskontrollen verwendet werden.
string[] FastReport.Utils.Config.ScriptSecurityProps.StopList - eine Liste von Schlüsselwörtern, die im Berichtsskript nicht verwendet werden sollten. Enthält eine Standardliste von Wörtern.
FastReport.Utils.Config.ScriptSecurityProps.SetDefaultStopList() - setzt den Standardwert der StopList (discards changes).
Der entwickelte Berichtsskript-Schutzkomplex ermöglicht es, die Gefahr der Injektion von bösartigem Code und dessen Ausführung auf der Serverseite zu minimalisieren.
Es muss daran erinnert werden, dass selbst die Verwendung von integrierten Sicherheitskontrollen für Berichtsskripte keinen hundertprozentigen Schutz gegen die Injektion von bösartigem Code in die gespeicherten Vorlagen bietet. Daher empfehlen wir dringend, Zugriffsprotokolle in Webanwendungen zu führen und einer begrenzten Anzahl von privilegierten Benutzern die Bearbeitung von Berichtsvorlagen zu erlauben.