Blazor Webassembly应用程序机密的安全存储

Blazor Webassembly应用程序机密的安全存储,blazor,blazor-webassembly,secret-manager,Blazor,Blazor Webassembly,Secret Manager,我正在blazor webassembly应用程序中搜索安全存储应用程序机密的方法。我们可以在下面的MSDN文档中找到服务器端应用程序的详细信息 对于完全在客户端浏览器中运行的Blazor WebAssembly应用程序,我们如何使用这些秘密 我的基本方案是,需要将密码、产品密钥(许可密钥)信息保留在应用程序代码之外。例如,我们在Program.cs的静态main方法中加载许可证 公共类程序 { 公共静态异步任务主(字符串[]args) { //要在此处访问产品密钥,需要避免硬编码 第三方数

我正在blazor webassembly应用程序中搜索安全存储应用程序机密的方法。我们可以在下面的MSDN文档中找到服务器端应用程序的详细信息

对于完全在客户端浏览器中运行的Blazor WebAssembly应用程序,我们如何使用这些秘密

我的基本方案是,需要将密码、产品密钥(许可密钥)信息保留在应用程序代码之外。例如,我们在Program.cs的静态main方法中加载许可证

公共类程序
{
公共静态异步任务主(字符串[]args)
{
//要在此处访问产品密钥,需要避免硬编码
第三方数据库注册许可(“产品密钥”);
var builder=WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add(“应用程序”);
AddTransient(sp=>newHttpClient{BaseAddress=newURI(builder.HostenEnvironment.BaseAddress)});
等待builder.Build().RunAsync();
}
我已经在blazor的文档中搜索过,但找不到任何详细信息。请帮助我在blazor webassembly中找到解决此问题的推荐方法


(对于服务器端,我们有多种选择,但对于客户端,推荐的方法是什么)

如果将其存储在客户端,则不安全

有一个实验性的MS nuget软件包声称通过加密使存储变得安全—Microsoft.AspNetCore.ProtectedBrowserStorage


您可以在此处阅读如何使用它

您可以使用
MemoryConfigurationSource

例如:

var appsettings = new Dictionary<string, string>()
{
   { "API:Key", "12345" }
};
var config = new MemoryConfigurationSource(InitialData = appsettings);
builder.Configuration.Add(memoryConfig);
var-appsettings=new Dictionary()
{
{“API:Key”,“12345”}
};
var config=newmemoryconfigurationsource(InitialData=appsettings);
builder.Configuration.Add(memoryConfig);
然后,无论您想使用什么,只需@inject配置(在razor页面中)或在您的类程序中,如下所示:

builder.Configuration.GetValue<string>("API:Key")
builder.Configuration.GetValue(“API:Key”)

你想对谁保密?用户?我的场景是,想在Program.cs的静态main方法中从机密文件中获取密码。为此,我正在检查多种方法,但我可以在服务器端轻松地做到这一点,但不能在客户端。如果我的要求错误,请建议我远离ap的推荐方法p应用程序代码中的秘密。任何人,请帮助我。谢谢。我需要在初始化blazor之前访问program.cs中的详细信息。对此有任何帮助吗?根据链接,Microsoft.AspNetCore.ProtectedBrowserStorage仅在blazor服务器项目中受支持。但是,您将如何调用数据库服务器?@Toolkit您从未提供client访问数据库服务器,这是一个安全缺陷。客户端应与API服务器对话,而API服务器应连接到服务器。这是否安全?黑客是否可以访问MemoryConfiguration Source中保存的值?
没有.NET服务器端依赖项。应用程序在下载到客户端后将完全运行。
这意味着该应用程序将调用DB服务器,您可以看到流量。我认为这是不安全的
builder.Configuration.GetValue<string>("API:Key")