Skip to Content
Nueva versión 12 disponible 🎉

Blazor Web App

Las aplicaciones Blazor pueden protegerse con Babel Obfuscator, lo que aporta varias ventajas. Una de las principales ventajas de usar las páginas Razor de Blazor es la posibilidad de combinar marcado HTML y código C#, lo que permite un código más conciso y legible. Esto resulta especialmente útil para los desarrolladores que conocen mejor C# y prefieren trabajar directamente con él en lugar de depender de JavaScript o de otros lenguajes de front-end.

La ofuscación puede renombrar clases, métodos y variables para ocultar sus nombres originales, lo que dificulta que posibles atacantes comprendan y modifiquen el código. En el caso de una aplicación Blazor, ofuscar las páginas Razor también puede impedir que los usuarios finales vean o manipulen el código HTML y C#, lo que aporta una capa de seguridad adicional.

El repositorio de GitHub https://github.com/dotnet/blazor-samples  contiene varias aplicaciones de ejemplo que muestran distintas funciones y capacidades de la tecnología Blazor. Se usará uno de estos ejemplos para mostrar cómo integrar Babel Obfuscator de forma eficaz para ofuscar una aplicación web Blazor.

git clone https://github.com/dotnet/blazor-samples

Para empezar con los ejemplos de aplicaciones Blazor, puede clonar el repositorio del proyecto disponible en GitHub. Una vez clonado el repositorio, vaya a la carpeta 7.0\BlazorServerSignalRApp y abra con Visual Studio el archivo de proyecto BlazorServerSignalRApp.csproj.

Si tiene la licencia Company, puede ofuscar la aplicación durante el proceso de compilación añadiendo una referencia al paquete NuGet Babel.Obfuscator. Esto hace que el proceso de ofuscación sea más sencillo y directo, y le permite proteger su aplicación de forma más eficaz.

Abra el archivo de proyecto haciendo doble clic en el nodo del proyecto BlazorServerSignalRApp en la ventana Solution Explorer (explorador de soluciones) y añada el siguiente fragmento de código de MSBuild antes de la etiqueta de cierre </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>

Guarde el archivo y recompile la solución. Durante el proceso de compilación, Babel Obfuscator se ejecuta automáticamente y procesa el ensamblado de destino. Para probar la aplicación ofuscada, pulse F5 para iniciar el depurador de Visual Studio.

Aplicación Blazor Server SignalR

En Blazor, cada página web es un componente Razor implementado como un archivo .razor que mezcla HTML y código C#. Cuando se compila el componente, Visual Studio genera una clase pública que corresponde al componente Razor, y esta clase se usa para construir la página web en el navegador. De forma predeterminada, Babel Obfuscator no renombra ningún símbolo visible desde el exterior, para no romper la interfaz pública del ensamblado. Por tanto, las clases públicas que corresponden a las páginas web de Blazor no se ofuscan.

No obstante, puede proteger estas páginas web configurando Babel Obfuscator con reglas XML para ofuscar las clases de forma explícita. Así puede impedir el acceso no autorizado a su código y su modificación, lo que dificulta que los atacantes apliquen ingeniería inversa a la lógica de su aplicación o la roben.

Para crear una regla XML que proteja con Babel Obfuscator el código subyacente de las páginas Razor, primero debe abrir el ensamblado de la aplicación con la herramienta de inspección de .NET que prefiera. Puede usar herramientas como ILSpy, DotPeek o dnSpy, que permiten descompilar el ensamblado e inspeccionar su contenido. Una vez abierto el ensamblado, busque la clase que representa el código subyacente de la página Razor que quiere proteger; debe tener el mismo nombre que la página Razor y estar en un espacio de nombres cuyo nombre termine en Pages o Shared.

BlazorServerSignalRApp desensamblado

Una vez localizada la clase, puede crear una regla XML para Babel Obfuscator dirigida a las clases que quiere ofuscar. La regla XML debe indicar el nombre del espacio de nombres que quiere proteger. En este caso

Cree un nuevo elemento de proyecto XML con el nombre babelRules.xml y añada la regla siguiente:

<?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>

A continuación, añada el archivo babelRules.xml a la tarea Babel de este modo:

<Babel RulesFiles="$(ProjectDir)babelRules.xml" ... />

Ejecute la compilación e inspeccione el ensamblado de destino recién generado.

BlazorServerSignalRApp desensamblado

Las clases públicas que corresponden a las páginas web ya no son visibles.

Configurar Babel Obfuscator con reglas XML permite controlar con detalle qué clases se ofuscan y cómo se renombran, lo que le da más flexibilidad y más opciones de personalización.

Por lo general, puede usar la función de publicación de Visual Studio para desplegar la aplicación en una carpeta. Una vez publicada la aplicación, ejecute BlazorServerSignalRApp.exe para iniciarla. Así puede probar la aplicación ofuscada y asegurarse de que funciona como se espera.

La aplicación de ejemplo con Babel Obfuscator ya integrado puede descargarse aquí .

Last updated on