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 :
- Le sandboxing permet de séparer le code potentiellement non fiable du reste de l’application, ce qui garantit que les vulnérabilités dans le code sandboxé ne compromettent pas l’ensemble de l’application.
- Le sandboxing vous permet de définir des autorisations limitées pour le code en cours d’exécution, empêchant ainsi le code malveillant d’effectuer des actions.
- Le sandboxing peut être utilisé pour restreindre les ressources afin d’éviter que le code ne consomme trop de ressources système ou autres, ce qui aurait un impact négatif sur les performances globales de l’application.
- Les développeurs peuvent surveiller et contrôler les activités du code dans le bac à sable C# et y mettre fin si un comportement suspect ou malveillant est détecté.
- L’environnement Sandbox aide les développeurs C# à réduire les risques de sécurité associés aux bibliothèques tierces, aux plug-ins ou à d’autres sources de code non fiables.
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 :
- Initialise une instance de la classe Configuration.
- 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. - 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.
- 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 :
- 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. - 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. - Initialise le document HTML avec la configuration spécifiée.
- 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 :
Name | Description |
---|---|
None | If a sandbox flag is not set, then every sandbox function is accepted. |
Navigation | The 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. |
Plugins | The 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. |
Origin | The flag forces content into a unique origin, thus preventing it from accessing other content from the same origin. |
Forms | The flag blocks form submission. |
Scripts | The flag blocks script execution. |
Images | The flag disables image loading. |
Vous pouvez télécharger les exemples complets et les fichiers de données sur GitHub.