在asp中存储API访问密钥的最佳实践.NET MVC



我目前正在将我所有的API/库秘密访问密钥存储在web.config中,并使用以下方法在代码中访问它们:

private static string AWSaccessKey = System.Web.Configuration.WebConfigurationManager.AppSettings["AWSaccessKey"];
private static string AWSprivateKey = System.Web.Configuration.WebConfigurationManager.AppSettings["AWSprivateKey"];

我认为这是推荐的,而不是直接对密码和访问密钥进行硬编码。尽管我刚刚收到AWS的一封电子邮件,告诉我我的AWS访问密钥被泄露了。然后我查看了我的Git回购,发现我的web.config文件完全可以查看;我原以为这个文件不会包含在我的Git回购中。

有人能告诉我如何安全地解决这种情况吗?我应该将web.config添加到Git忽略文件中吗?如果我这样做,当我的应用程序使用我的Git repo从管道部署时,它是否仍然可以访问web.config中的访问密钥?

在执行其他操作之前,请停用已泄露的API密钥
然后在存储库中搜索任何其他API密钥、连接字符串等,并停用它们
即使您从代码中删除密钥并进行推送,它仍然在存储库的历史记录中。


最好将API密钥和其他安全信息完全排除在代码库之外。

我个人的偏好是将它们存储在部署环境本身的加密环境变量中
这种方法还有一个额外的好处,可以防止您意外地将Prod API Key部署到QA环境中(反之亦然(。

另一种常见的方法是使用构建管道,并让该管道在构建时将安全值添加到代码的配置文件中。

您可以在未签入存储库的外部文件中拥有机密配置值。

如果您正在使用Azure,则可以自动执行部署过程,并在进行部署时填写机密值。请查看此以了解更多详细信息

在EnvironmentVariables&Webconfig密钥请检查

最新更新