Sandboxing – Sichere Code-Ausführung – C#

C#-Sandbox

Die C#-Sandbox ist eine eingeschränkte Umgebung, in der Code mit begrenzten Berechtigungen, Ressourcen und Privilegien ausgeführt wird. Der Hauptzweck einer Sandbox besteht darin, potenziell nicht vertrauenswürdigen oder unsicheren Code zu isolieren und den potenziellen Schaden zu begrenzen, den er im Falle einer Sicherheitslücke oder eines bösartigen Verhaltens verursachen kann.

Eine Sandbox-Umgebung trägt dazu bei, Sicherheitsrisiken zu mindern und die sichere Ausführung von Code zu gewährleisten:

Dieser Artikel untersucht das Konzept der C#-Sandbox und demonstriert ihre Anwendung für die sichere Codeausführung mit Aspose.HTML for .NET. Wir konzentrieren uns auf die Untersuchung der Security-Eigenschaft der Configuration-Klasse, die Aspose.HTML for .NET zum Erkennen und Reagieren auf potenzielle Sicherheitsbedrohungen in C#-Anwendungen bereitstellt.

Sandbox-Umgebung

Code-Sicherheit - Blockiert die Ausführung von Skripten

In einer Sandbox können Sie die Codesicherheit gewährleisten, indem Sie potenziell nicht vertrauenswürdige Elemente vom Rest Ihrer Anwendung isolieren und so die gesamte Anwendung vor Sicherheitslücken schützen. Ein Sandboxing-Flag-Set ist ein Satz von null oder mehr Flags, die dazu dienen, die Fähigkeiten potenziell nicht vertrauenswürdiger Ressourcen zu beschränken. Mit dem Sandbox-Attribut können Sie eine Reihe von Einschränkungen für den in den Frame geladenen Inhalt festlegen, z. B. Formulare und Skripte blockieren. Dadurch wird die Codesicherheit des aktuellen Dokuments verbessert, insbesondere wenn ein Dokument aus einer nicht verifizierten Quelle geladen wird.

Das folgende C#-Beispiel zeigt, wie Skripte als nicht vertrauenswürdige Ressource gekennzeichnet und für die Konvertierung von HTML in PDF deaktiviert werden können:

  1. Initialisieren Sie eine Instanz der Klasse Configuration.
  2. Setzen Sie das sandbox flag der Konfigurationsinstanz um den Wert Sandbox.Scripts einzuschließen. Dies kennzeichnet Skripte als nicht vertrauenswürdige Ressourcen innerhalb der Sandbox-Umgebung. Dieser Schritt ist entscheidend, da Skripte ein potenzielles Risiko für die Ausführung von bösartigem Code darstellen.
  3. Erstellen Sie eine Instanz der Klasse HTMLDocument mit dem Konstruktor HTMLDocument(address, configuration), der den HTML-Dateipfad und die Konfigurationsinstanz übernimmt.
  4. Rufen Sie die Methode ConvertHTML(document, options, outputPath) auf, um HTML in PDF zu konvertieren.
 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}

Durch das Setzen eines Sicherheitsflags zur Aktivierung von “Sandbox.Scripts” stellt die Aspose.HTML for .NET-Bibliothek sicher, dass Skripte in einem HTML-Dokument nicht ausgeführt werden, was zur Verbesserung der Sicherheit beiträgt und die mit nicht vertrauenswürdigen Skripten verbundenen potenziellen Risiken verringert.

Wie man das Laden von Bildern deaktiviert

Nehmen wir ein Beispiel, bei dem eine Sandbox verwendet wird, um das Laden von Bildern bei der Ausführung von HTML-Code zu deaktivieren:

  1. Bereiten Sie den HTML-Code vor und speichern Sie ihn in einer Datei. Der HTML-Code enthält ein <span>-Element mit einem Inline-Stil, der ein Hintergrundbild aus der URL setzt.
  2. Sandbox-Einrichtung. Erstellen Sie eine neue Instanz der Klasse Configuration und setzen Sie die Eigenschaft Security der Konfigurationsinstanz mit dem Flag Sandbox.Images. Dies zeigt an, dass die Ressource Images in der Sandbox-Umgebung als nicht vertrauenswürdig eingestuft werden soll. Durch die Kennzeichnung von Bildern als nicht vertrauenswürdige Ressourcen wird der Zugriff auf potenziell bösartige Bildquellen eingeschränkt.
  3. Initialisieren Sie das HTML-Dokument mit der angegebenen Konfiguration.
  4. Rufen Sie die Methode ConvertHTML(document, options, outputPath) auf, um das HTML-Dokument in eine PDF-Datei zu konvertieren.
 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}

Das obige C#-Beispiel veranschaulicht den Prozess des Sandboxing von HTML-Code, der Markierung bestimmter Ressourcen - in diesem Fall Bilder - als nicht vertrauenswürdig innerhalb der Sandbox-Umgebung und der anschließenden Konvertierung von HTML in ein PDF-Format mit deaktiviertem Laden von Bildern.

Sandboxing-Flags

In der Welt der Softwareentwicklung ist Sicherheit ein zentrales Anliegen. Beim Sandboxing wird eine sichere Umgebung geschaffen, in der nicht vertrauenswürdiger Code ausgeführt werden kann, ohne die Integrität des Systems zu gefährden. Die C#-Sandbox hilft Entwicklern, die Sicherheitsrisiken von Code zu reduzieren, indem sie Anwendungen vor potenziellen Schwachstellen schützt. Die Aspose.HTML C#-Bibliothek bietet mehrere Sandboxing-Flags, die jeweils unterschiedliche Fälle von Isolation und Sicherheit darstellen. Hier sind einige Sandbox-Flags:

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.

Sie können die vollständigen Beispiele und Datendateien von GitHub herunterladen.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.