Blazor Dlls-用户可以访问它们并进行反编译吗?

时间:2019-10-03 17:38:41

标签: blazor blazor-server-side blazor-client-side

请原谅,如果我缺少Blazor的明显功能,但dll像javascript文件一样存在于浏览器中,那么用户是否可以通过反编译文件来下载dll文件并查看执行代码,和/还是将它们用在浏览器之外?

如果开发人员不知道他们的库代码与他们的javascript代码一样可见,那么这似乎带来了非常明显的安全问题。

2 个答案:

答案 0 :(得分:2)

是的。

这是Blazor有2种口味的部分原因:

  1. Blazor WebAssembly(即客户端Blazor)
  2. Blazor服务器

Blazor Server应用程序只会使用以下文件来响应浏览器:

  • index.html
  • css
  • blazor.server.js
  • 其他常用内容(例如img的字体等)

所有渲染代码和其他代码(您的出色库以及您的出色代码)将在服务器上运行。

使用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的道路。