Comment Charger et Convertir du HTML Non Fiable en Toute Sécurité en Python – Sandboxing

Pourquoi le Sandboxing est Important

Lorsqu’on traite du contenu HTML externe, il y a toujours un risque de comportement imprévisible de la part des scripts ou des médias dans la page. Aspose.HTML for Python via .NET fournit un mécanisme de sandboxing qui vous permet de contrôler quels éléments du document peuvent être exécutés ou chargés pendant le traitement. Cela assure un rendu et une conversion de HTML sûrs, prévisibles et efficaces.

La plupart des scénarios de traitement HTML, tels que la conversion HTML en PDF ou images, ne nécessitent pas l’exécution de JavaScript ni l’utilisation de contenu distant. Permettre l’accès à de telles ressources peut ralentir le processus ou même causer un comportement indésirable. En utilisant les drapeaux de sandbox, vous pouvez désactiver ou restreindre explicitement les types de ressources tels que les scripts, les images, les plugins, les formulaires, etc. Cela vous donne un contrôle granulaire sur ce que votre document peut faire pendant le rendu ou la conversion.

Bloquer l’Exécution de JavaScript

L’exemple suivant montre comment désactiver JavaScript lors de la conversion HTML en PDF. Cela assure qu’aucun script n’est exécuté pendant le rendu – idéal pour des conversions sûres en PDF ou autres formats.

  1. Initialiser une instance de la classe Configuration.
  2. Définir le drapeau de sandbox de l’instance de configuration pour inclure la valeur Sandbox.SCRIPTS. Cela marque les scripts comme ressources non fiables dans l’environnement sandbox. Cette étape est cruciale car les scripts représentent un risque potentiel dans l’exécution de code malveillant.
  3. Créer une instance de la classe HTMLDocument en utilisant le constructeur HTMLDocument(address, configuration) qui prend le chemin du fichier HTML et l’instance de configuration.
  4. Appeler la méthode Converter.convert_html() pour convertir HTML en PDF.
 1# How to disable scripts for HTML to PDF conversion using Python
 2
 3import os
 4import aspose.html as ah
 5import aspose.html.converters as conv
 6import aspose.html.saving as sav
 7
 8# Define input and output directories
 9data_dir = "data"
10output_dir = "output"
11os.makedirs(output_dir, exist_ok=True)
12
13# Create an instance of the Configuration class
14with ah.Configuration() as config:
15    # Mark "scripts" as an untrusted resource
16    config.security |= ah.Sandbox.SCRIPTS
17
18    # Initialize an HTML document with the specified configuration
19    html_path = os.path.join(data_dir, "document-with-scripts.html")
20    with ah.HTMLDocument(html_path, config) as doc:
21        # Convert HTML to PDF
22        output_pdf = os.path.join(output_dir, "document-sandbox.pdf")
23        conv.Converter.convert_html(doc, sav.PdfSaveOptions(), output_pdf)

Résultat : Tout JavaScript dans le document HTML sera ignoré, produisant une sortie statique et sécurisée.

Bloquer les Images Non Fiables

Suivez ces étapes simples pour désactiver le chargement d’images et convertir HTML en PDF en toute sécurité en utilisant Aspose.HTML for Python via .NET :

  1. Préparer le code HTML et le sauvegarder 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 depuis l’URL.
  2. Créer une instance de configuration. Pour ce faire, initialisez la classe Configuration pour définir des paramètres de sécurité personnalisés pour votre document HTML.
  3. Définir le drapeau Sandbox.IMAGES dans la configuration pour marquer toutes les images comme ressources non fiables.
  4. Initialiser le document HTML. Charger le fichier HTML sauvegardé en utilisant la configuration personnalisée. Les restrictions de sandbox s’appliqueront automatiquement pendant le chargement.
  5. Utiliser la méthode Converter.convert_html() pour rendre le document et le sauvegarder comme un fichier PDF.
 1# Disable loading images in HTML with sandbox configuration using Python
 2
 3import os
 4import aspose.html as ah
 5import aspose.html.converters as conv
 6import aspose.html.saving as sav
 7
 8# Prepare HTML code and save it to a file
 9code = "<span style=\"background-image:url('https://docs.aspose.com/html/images/work/lioness.jpg')\">Hello, World!!</span> " \
10       "<script>document.write('Have a nice day!');</script>"
11
12output_dir = "output"
13os.makedirs(output_dir, exist_ok=True)
14html_path = os.path.join(output_dir, "sandboxing.html")
15output_pdf = os.path.join(output_dir, "sandboxing-out.pdf")
16
17with open(html_path, "w", encoding="utf-8") as file:
18    file.write(code)
19
20# Create an instance of Configuration
21with ah.Configuration() as configuration:
22    # Mark 'IMAGES' as an untrusted resource
23    configuration.security |= ah.Sandbox.IMAGES
24
25    # Initialize an HTML document with the specified configuration
26    with ah.HTMLDocument(html_path, configuration) as document:
27        # Convert HTML to PDF
28        conv.Converter.convert_html(document, sav.PdfSaveOptions(), output_pdf)

Résultat : Les images d’URLs externes ne seront pas chargées, et le PDF de sortie contiendra uniquement du contenu texte statique.

Questions Fréquemment Posées

1. Quelles options de sandbox sont disponibles ?

Aspose.HTML fournit plusieurs drapeaux de sandbox que vous pouvez combiner, tels que :

2. Comment le sandboxing améliore-t-il les performances ?

En ignorant l’exécution de scripts et en empêchant les requêtes réseau pour les ressources externes, le sandboxing réduit significativement le temps de traitement et l’utilisation des ressources pendant la conversion.

3. Comment puis-je combiner plusieurs restrictions de sandbox ?

Vous pouvez activer plusieurs restrictions à la fois, par exemple :

configuration.security |= ah.Sandbox.SCRIPTS | ah.Sandbox.IMAGES

Cette ligne désactive à la fois l’exécution de JavaScript et le chargement d’images dans une seule configuration.

4. Le sandboxing est-il disponible pour d’autres langages ?

Oui. La même fonctionnalité est disponible dans Aspose.HTML for .NET et Aspose.HTML for Java, avec des APIs similaires pour gérer les restrictions de sandbox.

5. Quels sont les cas d’utilisation courants pour le sandboxing ?

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

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.