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

我目前将所有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存储库从管道中部署应用程序时,我的应用程序是否仍然可以访问web.config中的访问键?

评论
  • 不爱请闪开
    不爱请闪开 回复

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

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

    我个人的喜好是将它们存储在部署环境本身的加密环境变量中。 此方法还具有防止您意外地将Prod API密钥部署到QA环境(反之亦然)的好处。

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