请原谅,如果我缺少Blazor的明显功能,但dll像javascript文件一样存在于浏览器中,那么用户是否可以通过反编译文件来下载dll文件并查看执行代码,和/还是将它们用在浏览器之外?
如果开发人员不知道他们的库代码与他们的javascript代码一样可见,那么这似乎带来了非常明显的安全问题。
答案 0 :(得分:2)
是的。
这是Blazor有2种口味的部分原因:
Blazor Server应用程序只会使用以下文件来响应浏览器:
所有渲染代码和其他代码(您的出色库以及您的出色代码)将在服务器上运行。
使用SignalR,浏览器和服务器将保持联系(通常通过websocket),并且每当需要更改UI时,服务器都会进行计算并告诉浏览器如何重新呈现UI。由于有了 blazor.server.js 文件,所有这些魔术都在浏览器中发生。
使用此模式,浏览器上不需要 DLL
现在,当涉及到 Blazor WebAssembly (客户端风格)时,您可能不想向浏览器提供任何敏感的专有代码,等等。当然,您始终可以使用工具来混淆代码,但您可能希望在可能的地方进行API调用,并在服务器上运行敏感代码。
答案 1 :(得分:1)
当然可以,这些DLL只是Web服务器提供的静态文件。我建议阅读this excellent blog post关于浏览器运行这些DLL的方式:
在解释模式下,Mono运行时本身会编译为WebAssembly,但您的.NET程序集文件不会编译。然后,浏览器可以加载和执行Mono运行时,该运行时又可以加载和执行由普通.NET编译工具链构建的标准.NET程序集(常规.NET .dll文件)。
如果您不希望用户对代码进行逆向工程(轻松),那么答案是代码混淆。 Blazor does not plan要提供此类功能,任何标准的.NET模糊处理程序都应起作用。我没有尝试过自己,但我敢肯定这会是一条坎bump的道路。