Blazor 前端Assembly Obfusca 完全指南

发布于 13 小时前  1 次阅读


最近在写项目的时候正好涉及到Blazor,顺手整理了一下相关资料。

Have questions? Feel free to ask in the comments section below.

正文

具有20年以上本机和托管代码安全经验的低级软件保护工程师。ArmDot的创建者,自2014年以来一直保护商业.NET应用程序。

Blazor WebAssembly混淆:保护客户端.NET代码

加载Blazor WebAssembly应用程序时,打开Chrome DevTools中的网络选项卡。您将看到一系列文件请求- .NET运行时、应用程序程序集和依赖项。这些文件中的每一个都被下载到浏览器中。它们中的每一个都包含已编译的.NET代码。它们中的每一个都可以保存,在ILSpy中打开并阅读。

这不是配置错误或安全疏忽。它是Blazor WebAssembly工作方式的基本架构。了解这对您的应用程序意味着什么是保护它的起点。

Blazor Server是一个完全不同的故事平台本身的注意事项

应用混淆时的Blazor特定故障模式

当用户打开Blazor WebAssembly应用程序时,浏览器引导WebAssembly中实现的.NET运行时,然后下载编译的程序集以运行它们的客户端。整个应用程序--业务逻辑、算法、字符串、组件层次结构--都在浏览器中而不是在服务器上执行。

在.NET 7及更早版本中,程序集被用作标准

文件。任何浏览器开发人员工具或下载管理器都可以直接保存它们。

在.NET 8和更高版本中, Microsoft更改了传递格式。组件现在包装为

使用Webcil格式的文件-标准.NET程序集周围的WebAssembly包装器。文件扩展名已更改。内容没有。A

来自Blazor应用程序的文件仍然可以加载到.NET反编译器中。IL仍然存在,元数据仍然存在,字符串字面值仍然存在。

曝光是相同的。包装不同。

Blazor WebAssembly支持提前编译( AOT ) ,在部署之前将IL直接编译为本机WebAssembly字节码。这有时被引用为使组件暴露不太相关。

不会。即使启用了AOT编译,原始.NET DLL文件仍与已编译的WebAssembly一起提供。Microsoft记录了这一点: Blazor要求反射元数据的DLL和支持某些.NET运行时功能。AOT编译

更多内容

除了上面提到的内容,还有几个点值得注意。首先是浏览器的兼容性,不同浏览器对Web Crypto API的支持程度有所不同。其次是性能问题,加密操作在大量数据时可能会影响用户体验。最后是密钥管理,如何安全地存储和传输密钥也是一个需要考虑的问题。

本文首发于JSVMP博客,转载注明出处。后续会持续更新更多相关内容。

Reference: Blazor WebAssembly Obfuscation: Protect Client-Side .NET


点击体验一键VMP加密 |下滑查看JSVMP相关文章