【问题标题】:Blazor Dlls - Can users access them and decompile?Blazor Dlls - 用户可以访问它们并反编译吗?
【发布时间】:2020-02-02 01:51:42
【问题描述】:

如果我在 Blazor 中遗漏了一些明显的东西,但由于 dll 像 javascript 文件一样存在于浏览器中,请原谅我,用户是否可以下载 dll 文件并通过反编译文件来查看执行代码和/或者在浏览器之外运行它们?

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

【问题讨论】:

  • 答案是肯定的,但我想大多数开发者已经意识到了。

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


【解决方案1】:

确实如此。

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

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

Blazor 服务器应用只会使用以下文件响应浏览器:

  • index.html
  • CSS
  • blazor.server.js
  • 其他常用的东西(例如 img 的字体等)

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

使用 SignalR,浏览器和服务器将不断保持联系(通常通过 websockets),并且每当 UI 需要更改时,服务器都会进行计算并告诉浏览器如何重新渲染 UI。多亏了 blazor.server.js 文件,所有这些魔法都发生在浏览器中。

使用此模式,浏览器上不需要 DLL

现在,当涉及到 Blazor WebAssembly(客户端风格)时,您可能不想向浏览器提供任何敏感的专有代码等。当然,您始终可以使用工具来混淆您的代码,但您可能希望尽可能进行 API 调用并在服务器上运行敏感代码。

【讨论】:

  • 那么,如果要求我不包含任何二进制(.exe、.dll)文件,那么 Blazor Server 是我唯一的选择(在这两者中)?
  • 如果为例如您的 dll 包含敏感的专有内容,最好不要将它们放在客户端(即浏览器)中,但是嘿,这适用于任何 SPA(React、Vue 等)。因此,如果您采用 Blazor WebAssembly 方式,请像设计任何其他 SPA 一样对其进行设计。对于商务逻辑、数据访问等,只需调用您的 API。话虽如此,Blazor W.A 与服务器的选择不应基于上述要求。例如如果需要支持 IE、需要使用完整的 .Net 框架等,请选择服务器风格。如果您想要离线功能、降低服务器成本等,请选择 W.A 风格。
  • 我有一个相对简单的任务,客户端应该显示来自服务器的基本实时更新数据(想想每秒的股价变化等......)。由于我对所有这些都是新手,因此选择正确的工具有点令人困惑。非常感谢您抽出宝贵时间,如果您对我的案例有任何建议,我们将不胜感激。
  • 另一个菜鸟问题,那么自动生成的 .dll 文件(在 bin 或 obj 文件夹中)也算在内?
  • gRPC + Blazor 非常适合您提到的股票价格场景。如果使用 Blazor 服务器,您可以使用“传统”gRPC。如果使用 Blazor W.A,您可以使用 gRPC-web(它也支持服务器流式传输)。 “传统” gRPC 可能更容易实现。文档:docs.microsoft.com/en-us/aspnet/core/grpc/browser
【解决方案2】:

当然可以,这些 DLL 只是 Web 服务器提供的静态文件。我建议阅读 this excellent blog post 以了解浏览器如何运行这些 DLL:

在解释模式下,Mono 运行时本身被编译为 WebAssembly,但您的 .NET 程序集文件不是。然后浏览器可以加载和执行 Mono 运行时,进而可以加载和执行由普通 .NET 编译工具链构建的标准 .NET 程序集(常规 .NET .dll 文件)。

如果您不希望用户(轻松地)对您的代码进行逆向工程,那么答案是代码混淆。 Blazor does not plan 提供这样的功能,任何标准的 .NET 混淆器应该工作。我自己没试过,但我敢肯定这会是一条崎岖不平的道路。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-03
    • 1970-01-01
    • 2012-01-25
    • 2021-12-07
    • 2020-01-15
    • 2017-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多