Blazor Web App
Blazor-Anwendungen lassen sich mit Babel Obfuscator schützen, was mehrere Vorteile bietet. Einer der Hauptvorteile der Razor-Seiten von Blazor ist die Möglichkeit, HTML-Markup und C#-Code zu kombinieren, was zu knapperem und besser lesbarem Code führt. Das ist besonders nützlich für Entwickler, die mit C# vertrauter sind und lieber direkt damit arbeiten, als auf JavaScript oder andere Frontend-Sprachen angewiesen zu sein.
Die Verschleierung kann Klassen, Methoden und Variablen umbenennen, um ihre ursprünglichen Namen zu verbergen. Dadurch wird es für mögliche Angreifer schwieriger, den Code zu verstehen und zu verändern. Bei einer Blazor-Anwendung kann die Verschleierung der Razor-Seiten außerdem den HTML- und C#-Code davor schützen, von Endbenutzern eingesehen oder manipuliert zu werden, und bildet so eine zusätzliche Schutzebene.
Das GitHub-Repository unter https://github.com/dotnet/blazor-samples enthält mehrere Beispielanwendungen, die verschiedene Funktionen und Möglichkeiten der Blazor-Technologie zeigen. Wir verwenden eines dieser Beispiele, um zu zeigen, wie Sie Babel Obfuscator integrieren, um eine Blazor-Webanwendung zu verschleiern.
git clone https://github.com/dotnet/blazor-samplesFür den Einstieg in die Blazor-Beispiele klonen Sie das Repository des Projekts von GitHub. Wechseln Sie nach dem Klonen in den Ordner 7.0\BlazorServerSignalRApp und öffnen Sie die Projektdatei BlazorServerSignalRApp.csproj in Visual Studio.
Wenn Sie die Company-Lizenz haben, können Sie die Anwendung im Buildprozess verschleiern, indem Sie eine Referenz auf das NuGet-Paket Babel.Obfuscator hinzufügen. Das macht die Verschleierung einfacher und geradliniger, sodass Sie Ihre Anwendung wirksamer schützen können.
Öffnen Sie die Projektdatei mit einem Doppelklick auf den Projektknoten BlazorServerSignalRApp im Fenster „Solution Explorer“ (Projektmappen-Explorer) und fügen Sie den folgenden MSBuild-Codeausschnitt vor dem schließenden Tag </Project> ein.
<UsingTask TaskName="Babel" AssemblyName="Babel.Build, Version=10.0.0.0, Culture=neutral, PublicKeyToken=138d17b5bd621ab7" />
<Target Name="Obfuscate" AfterTargets="Compile">
<Babel InputFile="$(ProjectDir)$(IntermediateOutputPath)$(TargetFileName)" OutputFile="$(ProjectDir)$(IntermediateOutputPath)$(TargetFileName)" ObfuscateTypes="true" ObfuscateEvents="true" ObfuscateMethods="true" ObfuscateProperties="true" ObfuscateFields="true" VirtualFunctions="true" UnicodeNormalization="false" FlattenNamespaces="true" StringEncryption="hash" ResourceEncryption="true" ControlFLowObfuscation="if=on;switch=on;case=on;call=on" ControlFLowIterations="3" />
</Target>Speichern Sie die Datei und erstellen Sie die Projektmappe neu. Im Buildprozess läuft Babel Obfuscator automatisch und verarbeitet die Ziel-Assembly. Um die verschleierte Anwendung zu testen, drücken Sie F5 und starten damit den Debugger von Visual Studio.

Die Anwendung Blazor Server SignalR
In Blazor ist jede Webseite eine Razor-Komponente, implementiert als .razor-Datei, die HTML- und C#-Code mischt. Beim Kompilieren der Komponente generiert Visual Studio eine öffentliche Klasse, die der Razor-Komponente entspricht, und mit dieser Klasse wird die Webseite im Browser aufgebaut. Babel Obfuscator benennt standardmäßig kein von außen sichtbares Symbol um, damit die öffentliche Schnittstelle der Assembly intakt bleibt. Die öffentlichen Klassen, die den Blazor-Webseiten entsprechen, werden daher nicht verschleiert.
Sie können diese Webseiten jedoch schützen, indem Sie Babel Obfuscator über XML-Regeln so konfigurieren, dass die Klassen ausdrücklich verschleiert werden. Damit verhindern Sie unbefugten Zugriff auf Ihren Code und dessen Veränderung und erschweren es Angreifern, die Logik Ihrer Anwendung per Reverse Engineering zu analysieren oder zu stehlen.
Um eine XML-Regel zu erstellen, die den Code hinter den Razor-Seiten mit Babel Obfuscator schützt, öffnen Sie zunächst die Assembly der Anwendung mit einem .NET-Inspektionstool Ihrer Wahl. Geeignet sind Tools wie ILSpy, DotPeek oder dnSpy, mit denen Sie die Assembly dekompilieren und ihren Inhalt untersuchen können. Suchen Sie in der geöffneten Assembly die Klasse, die den Code hinter der zu schützenden Razor-Seite darstellt. Sie trägt denselben Namen wie die Razor-Seite und liegt in dem Namespace, dessen Name auf Pages oder Shared endet.

BlazorServerSignalRApp, disassembliert
Wenn Sie die Klasse gefunden haben, erstellen Sie eine XML-Regel für Babel Obfuscator, die für die zu verschleiernden Klassen gilt. Die XML-Regel gibt den Namen des Namespace an, den Sie schützen möchten. In diesem Fall
Erstellen Sie ein neues XML-Projektelement mit dem Namen babelRules.xml und fügen Sie die folgende Regel hinzu:
<?xml version="1.0" encoding="utf-8" ?>
<Rules>
<Rule name="rule1" feature="renaming" exclude="false">
<Target>Classes</Target>
<Pattern>*</Pattern>
<Namespace>BlazorServerSignalRApp.Pages,BlazorServerSignalRApp.Shared</Namespace>
</Rule>
</Rules>Fügen Sie dann die Datei babelRules.xml wie folgt der Babel-Aufgabe hinzu:
<Babel RulesFiles="$(ProjectDir)babelRules.xml" ... />Führen Sie den Build aus und untersuchen Sie die neu erzeugte Ziel-Assembly.

BlazorServerSignalRApp, disassembliert
Die öffentlichen Klassen, die den Webseiten entsprechen, sind nicht mehr sichtbar.
Mit der Konfiguration von Babel Obfuscator über XML-Regeln steuern Sie genau, welche Klassen verschleiert und wie sie umbenannt werden, und gewinnen mehr Flexibilität und Anpassungsmöglichkeiten.
In der Regel können Sie die Anwendung mit der Funktion „Publish“ (Veröffentlichen) von Visual Studio in einem Ordner bereitstellen. Nach der Veröffentlichung starten Sie die Anwendung über die ausführbare Datei BlazorServerSignalRApp.exe. So können Sie die verschleierte Anwendung testen und sicherstellen, dass sie wie erwartet funktioniert.
Die Beispielanwendung mit bereits integriertem Babel Obfuscator können Sie hier herunterladen.