Sandboxing – Exécution de code sécurisée – C#

Bac à sable C# – Sandbox

Le bac à sable C# est un environnement restreint dans lequel le code s’exécute avec des autorisations, des ressources et des privilèges limités. L’objectif principal de l’utilisation d’un bac à sable est d’isoler le code potentiellement non fiable ou dangereux, en limitant les dommages potentiels qu’il peut causer en cas de faille de sécurité ou de comportement malveillant.

Un environnement de type bac à sable permet d’atténuer les risques de sécurité et de garantir une exécution sûre du code :

Cet article explore le concept de bac à sable C# et démontre son application pour obtenir une exécution sécurisée du code à l’aide d’Aspose.HTML for .NET. Nous nous concentrerons sur l’examen de la propriété Security de la classe Configuration que Aspose.HTML for .NET fournit pour détecter et répondre aux menaces de sécurité potentielles dans les applications C#.

Environnement bac à sable

Sécurité du code – bloque l’exécution des scripts

Dans un bac à sable, vous pouvez assurer la sécurité du code en isolant les éléments potentiellement non fiables du reste de votre application, protégeant ainsi l’ensemble de l’application contre les vulnérabilités. Un ensemble de drapeaux de sandboxing est un ensemble de zéro ou plusieurs drapeaux, qui sont utilisés pour restreindre les capacités des ressources potentiellement non fiables. L’attribut sandbox vous permet de définir un certain nombre de restrictions sur le contenu chargé dans le cadre, par exemple, de bloquer les formulaires et les scripts. Cela permet d’améliorer la sécurité du code du document actuel, en particulier lorsqu’un document est chargé à partir d’une source non vérifiée.

L’exemple C# suivant montre comment marquer les scripts comme une ressource non fiable et les désactiver pour la conversion HTML en PDF :

  1. Initialise une instance de la classe Configuration.
  2. Définir le drapeau sandbox de l’instance de configuration pour inclure la valeur Sandbox.Scripts. Cela marque les scripts comme des ressources non fiables dans l’environnement sandbox. Cette étape est cruciale car les scripts présentent un risque potentiel d’exécution de code malveillant.
  3. Créez une instance de la classe HTMLDocument à l’aide du constructeur HTMLDocument(address, configuration) qui prend le chemin du fichier HTML et l’instance de configuration.
  4. Appelez la méthode ConvertHTML(document, options, outputPath) pour convertir HTML en PDF.
 1// How to disable scripts for HTML to PDF conversion using C#
 2
 3// Create an instance of the Configuration class
 4using (Configuration configuration = new Configuration())
 5{
 6    // Mark "scripts" as an untrusted resource
 7    configuration.Security |= Sandbox.Scripts;
 8
 9    // Initialize an HTML document with specified configuration
10    using (HTMLDocument document = new HTMLDocument(Path.Combine(DataDir, "document-with-scripts.html"), configuration))
11    {
12        // Convert HTML to PDF
13        Converter.ConvertHTML(document, new PdfSaveOptions(), Path.Combine(OutputDir, "document-sandbox.pdf"));
14    }
15}

En définissant un drapeau de sécurité pour activer Sandbox.Scripts, la bibliothèque Aspose.HTML for .NET s’assure que les scripts d’un document HTML ne sont pas exécutés, ce qui contribue à améliorer la sécurité et à atténuer les risques potentiels associés aux scripts non fiables.

Comment désactiver le chargement des images

Prenons l’exemple d’un bac à sable utilisé pour désactiver le chargement des images lors de l’exécution du code HTML :

  1. Préparez un code HTML et enregistrez-le dans un fichier. Le code HTML contient un élément <span> avec un style en ligne qui définit une image d’arrière-plan à partir de l’URL.
  2. Configuration du bac à sable. Créez une nouvelle instance de la classe Configuration et définissez la propriété Security de l’instance de configuration avec le drapeau Sandbox.Images. Cela indique que la ressource Images doit être considérée comme non fiable dans l’environnement sandbox. En marquant les images comme des ressources non fiables, l’accès aux sources d’images potentiellement malveillantes est restreint.
  3. Initialise le document HTML avec la configuration spécifiée.
  4. Appelez la méthode ConvertHTML(document, options, outputPath) pour convertir le document HTML en fichier PDF.
 1// Disable loading images in HTML with sandbox configuration using C#
 2
 3// Prepare HTML code and save it to a file
 4string code = "<span style=\"background-image:url('https://httpbin.org/image/jpeg')\">Hello, World!!</span> " +
 5              "<script>document.write('Have a nice day!');</script>";
 6
 7File.WriteAllText(Path.Combine(OutputDir, "sandboxing.html"), code);
 8
 9// Create an instance of Configuration
10using (Configuration configuration = new Configuration())
11{
12    // Mark 'Images' as an untrusted resource
13    configuration.Security |= Sandbox.Images;
14
15    // Initialize an HTML document with specified configuration
16    using (HTMLDocument document = new HTMLDocument(Path.Combine(OutputDir, "sandboxing.html"), configuration))
17    {
18        // Convert HTML to PDF
19        Converter.ConvertHTML(document, new PdfSaveOptions(), Path.Combine(OutputDir, "sandboxing-out.pdf"));
20    }
21}

L’exemple C# ci-dessus illustre le processus de mise en bac à sable du code HTML, le marquage de ressources spécifiques – dans ce cas, les images – comme non fiables dans l’environnement du bac à sable, puis la conversion du code HTML au format PDF avec désactivation du chargement des images.

Sandboxing Flags

Dans le monde du développement logiciel, la sécurité est une préoccupation majeure. Le sandboxing consiste à créer un environnement sécurisé dans lequel un code non fiable peut s’exécuter sans compromettre l’intégrité du système. Le bac à sable C# aide les développeurs à réduire les risques liés à la sécurité du code en protégeant les applications contre les vulnérabilités potentielles. La bibliothèque Aspose.HTML C# propose plusieurs sandboxing flags, chacun présentant des cas différents d’isolation et de sécurité. Voici quelques drapeaux de bac à sable :

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.

Vous pouvez télécharger les exemples complets et les fichiers de données sur GitHub.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.