【问题标题】:Securing Blazor webassembly source保护 Blazor webassembly 源
【发布时间】:2020-09-11 08:50:49
【问题描述】:

我使用 Visual Studio 模板创建了带有身份服务器的 .NET Core 托管的 Blazor webassembly 项目。如果我希望整个 Blazor 编译的客户端代码仅对经过身份验证的用户可用,我应该如何更改配置?

现在每个人都可以访问客户端应用程序编译的代码,即使我使用 [Authorize] 保护所有 Blazor 路由,因为单页应用程序作为单个实体下载到浏览器。我不想将编译后的代码公开提供给甚至无法访问 app 的用户。

【问题讨论】:

  • 也许您可以使用 BlazorLazyLoading lib 拆分您的应用程序,因为这在框架中尚不可用。并使用自定义中间件保护您的文件

标签: blazor blazor-client-side


【解决方案1】:

将其移至服务器端托管模型。这就像任何其他纯客户端 SPA - 您的代码发送到客户端,他们可以读取它。

【讨论】:

  • 是的,每个用户都可以阅读 SPA 客户端代码,但是应该有一种方法可以将 SPA 捆绑包限制为只有可以登录的用户。我认为这是在公共互联网上提供公司内部应用程序时的基本要求。没有人希望他们的竞争对手可以检查他们的应用程序客户端功能。在允许加载主客户端应用程序包之前,应该有一种方法可以单独登录。
  • 嗯,没有,可能会为此打开 MS 的问题,或者找到现有的问题。这与在“普通” SPA 中下载 app.js 相同 - 即使并非所有视图都可以在没有适当设置的情况下呈现,但一切都归于客户端。
  • 普通 SPA .js 包可以限制为仅在登录后可用。您只需要在 SPA .js 包之外实现登录功能,并只允许将包加载到登录用户。像这样的一些想法也应该由 Microsoft 为 Blazor webassembly 记录,因为我 100% 确信大多数公司都喜欢保护他们的包不被匿名访问。
  • 我的类比可能不完整。想象一下,您的 spa.js 只是 auth 和 non-auth 部分的一个文件 - 这就是 blazor 目前的情况。您可以将组件和业务逻辑分成几个程序集,您可能会做一些 Web 服务器技巧以允许仅为经过身份验证的用户加载某些程序集,但是这些 401 会破坏 blazor 应用程序,因为它在第一次加载时初始化。不过,企业可能会为其内部员工使用服务器端 blazor。如果他们给他们 WASM 应用程序(可能是 PWA),那么有什么区别......待续
  • 因为有恶意的员工可能会进行身份验证,然后无论如何都可以获取源。然后,如果这是一个面向公众的应用程序,您会将敏感数据放在经过身份验证的 REST API 后面,并且仅在经过身份验证后才将其发送出去——客户端上根本没有秘密。
猜你喜欢
  • 2021-10-26
  • 2021-05-03
  • 2022-08-19
  • 2020-12-09
  • 2020-08-19
  • 2020-06-26
  • 2021-02-08
  • 2020-06-28
  • 2020-09-02
相关资源
最近更新 更多