如何将加密的API密钥存储在.net核心控制台应用程序中



我正在开发一个与第三方API集成的.NET核心控制台应用程序。为了进行集成,我需要在API请求中传递API密钥。所以我的问题是在哪里/如何将API密钥存储在控制台应用程序中?在常规的.NET控制台应用程序中,我用于将API密钥存储在app.config中,并使用Aspnet_regiis加密密钥。。但不确定如何在.NET核心控制台应用程序中做到这一点?

您可以考虑。。。

  • 获取针对不同环境发布的单独密钥(这样,在不影响其他环境的情况下,可以过期/取消受损密钥(。

  • 例如,将加密的密钥存储在操作系统提供的密钥存储中[https://learn.microsoft.com/en-us/dotnet/standard/security/cryptography-model]。(这只是意味着他们不会被随意路过的人"留下来躺着"。(

  • 从控制台应用程序中删除用于检索密钥的代码,也许可以删除到常规开发人员无法访问的简单服务或库。(一级分离。(

  • 要在应用程序中嵌入信息,请考虑资源文件[https://learn.microsoft.com/en-us/dotnet/framework/resources/creating-resource-files-for-desktop-apps]

底线:这个问题说明了公钥(非对称(密码学存在的理由[https://en.wikipedia.org/wiki/Public-key_cryptography]但是任何处理一条信息的应用程序";在流中解密";使这些信息对所有有权操作(调试(实时应用程序或在系统上使用诊断工具的人来说都很脆弱。(如果一个人需要钥匙开门,那么你必须给他们一把钥匙来开门,这样就无法防止不诚实地滥用这一特权。(

一点点偏执是健康的,但太多可能会阻碍事情的完成。

开发中的安全

对于本地开发,您可以使用秘密管理器工具(仅用于开发,从不用于生产(。此工具允许您将敏感数据本地存储在机器上的项目树之外。

该工具不是超级安全的,密钥也没有加密,但它提供了一种简单的方法来避免在项目配置文件中存储机密,并且必须记住将它们添加到源代码管理忽略列表中。

生产安全

一种常见的方法是将机密存储在外部vault中。

如果您在Azure上托管应用程序,Azure还提供了一个更安全的选项:Azure密钥库。

密钥保管库是一种用于管理机密的云托管服务,您授权的应用程序可以通过加密通道访问该服务。

建议不要在.NET控制台应用程序中存储加密密钥。更理想的做法是将秘密分开,在开发模式下使用秘密管理工具存储它们,并像前面提到的那样为生产研究Azure KeyVault等服务。

查看有关应用程序机密和配置的链接,以及为什么我们需要一个工具来管理它https://dev.to/dotnet/how-to-store-app-secrets-for-your-asp-net-core-project-2j5b有关如何执行此操作的详细说明。

相关内容

  • 没有找到相关文章

最新更新