Sandboxing – Ejecución segura de código – C#

Zona de pruebas de C#– Sandbox

C# sandbox es un entorno restringido donde el código se ejecuta con permisos, recursos y privilegios limitados. El objetivo principal de utilizar un sandbox es aislar código potencialmente no confiable o inseguro, limitando el daño potencial que puede causar en caso de una vulnerabilidad de seguridad o un comportamiento malicioso.

Un entorno sandbox ayuda a mitigar los riesgos de seguridad y garantizar la ejecución segura del código:

Este artículo explora el concepto de entorno limitado de C# y demuestra su aplicación para lograr una ejecución segura de código utilizando Aspose.HTML for .NET. Nos centraremos en examinar la propiedad Security de la clase Configuration que Aspose.HTML for .NET proporciona para detectar y responder a posibles amenazas de seguridad en aplicaciones C#.

Sandbox Environment

Seguridad del código: bloquea la ejecución del script

En un sandbox, puede garantizar la seguridad del código aislando elementos potencialmente no confiables del resto de su aplicación, protegiendo así toda la aplicación contra vulnerabilidades. Un conjunto de banderas de espacio aislado (sandboxing flags) es un conjunto de cero o más banderas, que se utilizan para restringir las capacidades de recursos potencialmente no confiables. El atributo Sandbox le permite establecer una serie de restricciones sobre el contenido cargado en el marco, por ejemplo, bloquear formularios y scripts. Esto mejora la seguridad del código del documento actual, especialmente cuando un documento se carga desde una fuente no verificada.

El siguiente ejemplo de C# muestra cómo marcar scripts como recursos que no son de confianza y deshabilitarlos para la conversión de HTML a PDF:

  1. Inicialice una instancia de la clase Configuration.
  2. Establezca el sandbox flag de la instancia de configuración para incluir el valor Sandbox.Scripts. Esto marca los scripts como recursos no confiables dentro del entorno sandbox. Este paso es crucial ya que los scripts plantean un riesgo potencial al ejecutar código malicioso.
  3. Cree una instancia de la clase HTMLDocument utilizando el constructor HTMLDocument(address, configuration) que toma la ruta del archivo HTML y la instancia de configuración.
  4. Llame al método ConvertHTML(document, options, outputPath) para convertir HTML a PDF.
 1// Create an instance of the Configuration class
 2using (var configuration = new Configuration())
 3{
 4    // Mark "scripts" as an untrusted resource
 5    configuration.Security |= Sandbox.Scripts;
 6
 7    // Initialize an HTML document with specified configuration
 8    using (var document = new HTMLDocument(Path.Combine(DataDir, "document-with-scripts.html"), configuration))
 9    {
10        // Convert HTML to PDF
11        Converter.ConvertHTML(document, new PdfSaveOptions(), Path.Combine(OutputDir, "document-sandbox.pdf"));
12    }
13}            

Al establecer un indicador de seguridad para habilitar Sandbox.Scripts, Aspose.HTML for .NET garantiza que los scripts en un documento HTML no se ejecuten, lo que ayuda a mejorar la seguridad y mitigar los riesgos potenciales asociados con scripts que no son de confianza.

Cómo deshabilitar la carga de imágenes

Considere un ejemplo en el que se utiliza una zona de pruebas para deshabilitar la carga de imágenes al ejecutar código HTML:

  1. Prepare el código HTML y guárdelo en un archivo. El código HTML contiene un elemento <span> con un estilo en línea que establece una imagen de fondo de la URL.
  2. Configuración de la zona de pruebas. Cree una nueva instancia de la clase Configuration y establezca la propiedad Security de la instancia de configuración con el indicador Sandbox.Images. Esto indica que el recurso Imágenes no debe considerarse de confianza en el entorno sandbox. Al marcar imágenes como recursos no confiables, se restringe el acceso a fuentes de imágenes potencialmente maliciosas.
  3. Inicialice el documento HTML con la configuración especificada.
  4. Llame al método ConvertHTML(document, options, outputPath) para convertir el documento HTML en un archivo PDF.
 1// Prepare HTML code and save it to a file
 2var code = "<span style=\"background-image:url('https://httpbin.org/image/jpeg')\">Hello, World!!</span> " +
 3           "<script>document.write('Have a nice day!');</script>";
 4
 5File.WriteAllText(Path.Combine(OutputDir, "sandboxing.html"), code);
 6
 7// Create an instance of Configuration
 8using (var configuration = new Configuration())
 9{
10    // Mark 'Images' as an untrusted resource
11    configuration.Security |= Sandbox.Images;
12
13    // Initialize an HTML document with specified configuration
14    using (var document = new HTMLDocument(Path.Combine(OutputDir, "sandboxing.html"), configuration))
15    {
16        // Convert HTML to PDF
17        Converter.ConvertHTML(document, new PdfSaveOptions(), Path.Combine(OutputDir, "sandboxing-out.pdf"));
18    }
19}

El ejemplo de C# anterior demuestra el proceso de aislamiento de código HTML, marcando recursos específicos (en este caso, imágenes) como no confiables dentro del entorno de aislamiento y luego convirtiendo HTML a formato PDF con la carga de imágenes deshabilitada.

Sandboxing Flags

En el mundo del desarrollo de software, la seguridad es una preocupación primordial. El sandboxing implica la creación de un entorno seguro donde se pueda ejecutar código que no sea de confianza sin comprometer la integridad del sistema. C# sandbox ayuda a los desarrolladores a reducir los riesgos de seguridad del código al proteger las aplicaciones de posibles vulnerabilidades. La biblioteca Aspose.HTML C# ofrece varios sandboxing flags, cada uno de los cuales presenta diferentes casos de aislamiento y seguridad. Aquí hay algunas banderas de sandbox:

NameDescription
NoneIf a sandbox flag is not set, then every sandbox function is accepted.
NavigationThe flag prevents content from navigating browsing contexts other than the sandboxed browsing context itself (or browsing contexts further nested inside it), auxiliary browsing contexts, and the top-level browsing context.
PluginsThe flag prevents content from instantiating plugins, whether using the embed element, the object element, the applet element, or through the navigation of a nested browsing context unless those plugins can be secured.
OriginThe flag forces content into a unique origin, thus preventing it from accessing other content from the same origin.
FormsThe flag blocks form submission.
ScriptsThe flag blocks script execution.
ImagesThe flag disables image loading.

Puede descargar los ejemplos completos y los archivos de datos desde GitHub.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.