FastReport .NET soporta el cálculo de expresiones para mostrar valores en la forma deseada o cualquier condición de presentación del objeto. También es posible procesar eventos para cada objeto del informe, por ejemplo, antes de imprimirlo. Los elementos de control de eventos se colocan en un script de informe que soporta los lenguajes C # y VB.NET. Además de procesar eventos, el script puede contener casi cualquier cálculo o acción que pueda generar los datos necesarios o cambiar el comportamiento del informe, según lo requiera el desarrollador de la plantilla del informe.
Antes de construir el programa en el lenguaje de secuencia de comandos del informe, el generador de informes tiene en cuenta todas las expresiones, funciones y llamadas a los parámetros del informe. Luego, el programa se combina con el script que había escrito el desarrollador de la plantilla de informe. El script resultante se compila y carga como una biblioteca en la aplicación que trabaja con el generador de informes.
Cuando ejecuta informes en aplicaciones web, puede editarlos con el diseñador en línea. La edición se realiza mediante un navegador, el informe editado se envía al servidor y luego se puede construir allí.
Si bien los informes son editados por desarrolladores confiables y se ejecutan en un entorno aislado, la capacidad de usar scripts en informes le brinda libertad y posibilidades casi ilimitadas para el procesamiento y visualización de datos. La edición y ejecución están bajo control. Tan pronto como aparece la posibilidad de acceso general a la edición de informes a través del navegador y diseñador en línea, surge la cuestión de la seguridad de crear informes en el servidor. Es posible inyectar código malicioso en el script y las expresiones del informe.
Para evitar la ejecución de un código malicioso en el script y las expresiones de informes cuando se trabaja en la web, se han agregado características de seguridad especiales en FastReport .NET 2020.3.22. Los cambios se refieren a FastReport .NET, FastReport .NET Core, FastReport Mono y FastReport Open Source.
Las funciones de seguridad están activas de forma predeterminada, pero los desarrolladores pueden cambiarlas o deshabilitarlas según sea necesario en sus aplicaciones.
Nuevos métodos y propiedades:
bool FastReport.Utils.Config.EnableScriptSecurity: habilita o deshabilita la verificación del script del informe. Funciona solo cuando los informes se ejecutan en aplicaciones web
(FastReport.Utils.Config.WebMode == verdadero). Esta propiedad se establece en True de forma predeterminada (habilitada).
event FastReport.Utils.Config.OnEnableScriptSecurityChanged: el evento se activa cuando se cambia EnableScriptSecurity. Se puede utilizar para controles de seguridad adicionales.
FastReport.Web.WebReport.SetScriptSecurity (IScriptChecker scriptChecker): instala una implementación personalizada de un método de verificación que anula los controles de seguridad integrados.
ScriptSecurityProperties FastReport.Utils.Config.ScriptSecurityProps: parámetros para configurar la verificación de seguridad del script. Se establece en NULL si se está ejecutando una aplicación que no es web. (FastReport.Utils.Config.WebMode == falso).
bool FastReport.Utils.Config.ScriptSecurityProps.AddStubClasses: habilita o deshabilita la adición de clases de código auxiliar para el script. Esta propiedad se establece en True de forma predeterminada (habilitada). No se anula configurando su propio controlador SetScriptSecurity (ver arriba).
event FastReport.Utils.Config.ScriptSecurityProps.OnStopListChanged: el evento se llama cuando se cambia StopList. Se puede utilizar para controles de seguridad adicionales.
string [] FastReport.Utils.Config.ScriptSecurityProps.StopList: una lista de palabras clave que no deben usarse en el script del informe. Contiene una lista predeterminada de palabras.
FastReport.Utils.Config.ScriptSecurityProps.SetDefaultStopList (): establece el valor predeterminado de StopList (descarta los cambios).
El complejo de protección de scripts de informes desarrollado permite minimizar la amenaza de inyección de código malicioso y su ejecución en el lado del servidor.
Es necesario recordar que incluso el uso de elementos de control de seguridad de scripts de informes integrados no proporciona una protección del cien por cien contra la inyección de código malicioso en las plantillas guardadas. Por lo tanto, recomendamos encarecidamente mantener registros de acceso en las aplicaciones web y permitir que un número limitado de usuarios privilegiados editen las plantillas de informes.