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

问题描述 投票:0回答:1

我目前将所有的APIlibrary秘密访问密钥存储在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 repo,发现我的web.config文件是完全可以查看的,我本来以为这个文件不会包含在我的Git repo中。

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

c# asp.net asp.net-mvc amazon-web-services
1个回答
2
投票

在你做其他事情之前,先停用泄露的API密钥。然后在你的资源库中搜索任何其他的API密钥、连接字符串等,并将它们也停用。即使你把密钥从代码中删除并推送,它仍然在存储库的历史记录中。


最好把你的API密钥和其他安全信息完全从代码库中删除。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.