Application web Blazor
Les applications Blazor peuvent être protégées avec Babel Obfuscator, ce qui présente plusieurs avantages. L’un des principaux avantages des pages Razor de Blazor est de pouvoir combiner balisage HTML et code C#, ce qui donne un code plus concis et plus lisible. C’est particulièrement utile aux développeurs qui connaissent mieux C# et préfèrent l’utiliser directement plutôt que de recourir à JavaScript ou à d’autres langages front-end.
L’obfuscation peut renommer les classes, les méthodes et les variables pour masquer leurs noms d’origine, ce qui rend le code plus difficile à comprendre et à modifier pour d’éventuels attaquants. Dans une application Blazor, l’obfuscation des pages Razor peut aussi empêcher les utilisateurs finaux de consulter ou de manipuler le code HTML et C#, ce qui ajoute une couche de sécurité.
Le dépôt GitHub https://github.com/dotnet/blazor-samples contient plusieurs exemples d’applications qui illustrent différentes fonctionnalités de la technologie Blazor. L’un de ces exemples sert ici à montrer comment intégrer Babel Obfuscator pour obfusquer une application web Blazor.
git clone https://github.com/dotnet/blazor-samplesPour commencer à utiliser les exemples d’applications Blazor, clonez le dépôt du projet disponible sur GitHub. Une fois le dépôt cloné, accédez au dossier 7.0\BlazorServerSignalRApp, puis ouvrez le fichier de projet BlazorServerSignalRApp.csproj avec Visual Studio.
Si vous disposez de la licence Company, vous pouvez obfusquer l’application pendant le processus de build en ajoutant une référence au package NuGet Babel.Obfuscator. L’obfuscation est ainsi plus simple à mettre en place, et vous protégez votre application plus efficacement.
Ouvrez le fichier de projet en double-cliquant sur le nœud du projet BlazorServerSignalRApp dans la fenêtre Solution Explorer (Explorateur de solutions), puis ajoutez l’extrait de code MSBuild suivant avant la balise de fermeture </Project>.
<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>Enregistrez le fichier et régénérez la solution. Pendant le processus de build, Babel Obfuscator s’exécute automatiquement et traite l’assembly cible. Vous pouvez tester l’application obfusquée en appuyant sur F5 pour lancer le débogueur de Visual Studio.

Application Blazor Server SignalR
Dans Blazor, chaque page web est un composant Razor implémenté dans un fichier .razor qui mêle HTML et code C#. Lorsque le composant est compilé, Visual Studio génère une classe publique correspondant au composant Razor, et cette classe sert à construire la page web dans le navigateur. Par défaut, Babel Obfuscator ne renomme aucun symbole visible de l’extérieur, pour ne pas rompre l’interface publique de l’assembly. Les classes publiques qui correspondent aux pages web Blazor ne sont donc pas obfusquées.
Vous pouvez toutefois protéger ces pages web en configurant Babel Obfuscator avec des règles XML qui obfusquent explicitement ces classes. Vous empêchez ainsi l’accès non autorisé à votre code et sa modification, et il devient plus difficile pour des attaquants de soumettre la logique de votre application à la rétro-ingénierie ou de la voler.
Pour créer une règle XML qui protège le code-behind des pages Razor avec Babel Obfuscator, ouvrez d’abord l’assembly de l’application avec l’outil d’inspection .NET de votre choix. Des outils tels que ILSpy, DotPeek ou dnSpy permettent de décompiler l’assembly et d’en examiner le contenu. Une fois l’assembly ouvert, recherchez la classe qui représente le code-behind de la page Razor à protéger : elle porte le même nom que la page Razor et se trouve dans l’espace de noms dont le nom se termine par Pages ou Shared.

BlazorServerSignalRApp désassemblé
Une fois la classe repérée, vous pouvez créer une règle XML pour Babel Obfuscator qui cible les classes à obfusquer. La règle XML doit indiquer le nom de l’espace de noms à protéger. Dans ce cas
Créez un nouvel élément de projet XML nommé babelRules.xml et ajoutez la règle suivante :
<?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>Ajoutez ensuite le fichier babelRules.xml à la tâche Babel comme suit :
<Babel RulesFiles="$(ProjectDir)babelRules.xml" ... />Lancez le build et examinez le nouvel assembly cible généré.

BlazorServerSignalRApp désassemblé
Les classes publiques correspondant aux pages web ne sont plus visibles.
La configuration de Babel Obfuscator avec des règles XML permet de contrôler finement les classes à obfusquer et la façon de les renommer, ce qui vous donne plus de souplesse et de possibilités de personnalisation.
En général, vous pouvez utiliser la fonctionnalité Publish (Publier) de Visual Studio pour déployer l’application dans un dossier. Une fois l’application publiée, exécutez le fichier BlazorServerSignalRApp.exe pour la lancer. Vous pouvez ainsi tester l’application obfusquée et vérifier qu’elle fonctionne comme prévu.
L’exemple d’application avec Babel Obfuscator déjà intégré peut être téléchargé ici .