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.
- Initialiser une instance de la classe Configuration.
- 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. - 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. - 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 :
- 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. - 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.
- Définir le drapeau
Sandbox.IMAGESdans la configuration pour marquer toutes les images comme ressources non fiables. - 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.
- 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 :
Sandbox.SCRIPTS– Désactive l’exécution de JavaScript.Sandbox.IMAGES– Bloque le chargement d’images externes.Sandbox.NAVIGATION– Empêche les redirections ou tentatives de navigation.Sandbox.FORMS– Désactive l’envoi de formulaires et l’activité liée.Sandbox.PLUGINS– Empêche le contenu d’instancier des plugins.
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 ?
- Convertir des emails HTML ou des pages web de sources externes ;
- Traiter des données web scrapées sans exécuter de contenu actif ;
- Exécuter des conversions dans des environnements sécurisés ou hors ligne ;
- Besoin d’améliorer les performances de conversion en ignorant les ressources dynamiques.
Vous pouvez télécharger les exemples complets et les fichiers de données depuis GitHub.