保持API密钥不被提交的最佳做法?

时间:2012-02-09 16:57:46

标签: c# security api

我正在开发一个c#程序,它从Web服务中检索信息,并使用API​​密钥进行身份验证。

目前我在我的程序中硬编码了这个值,但由于我想将代码保存在公共github存储库中,我必须在提交之前手动删除它。

什么是更自动化的方法来阻止我在代码中意外提交API密钥?

我正在考虑创建一个脚本,在Visual Studio中使用pre / post-build命令执行选项添加秘密。这样我就不必在代码中保留API密钥,并且在构建之后它将被删除,因此不会意外地提交它。

2 个答案:

答案 0 :(得分:2)

使用configuration fileWindows Registry

我还建议加密它,在Windows上你可以使用Data Protection API(DPAPI)。 .Net 2.0+有一个类调用ProtectedData,使用起来非常简单。这样,如果您确实提交了配置,则密钥仍然是加密的,并且只能在您的计算机上运行,​​甚至也适用于该计算机上的用户,具体取决于您的数据保护范围。你想要让某些人输入一把钥匙在他们的机器上使用。

答案 1 :(得分:0)

您可以将其添加到web.config并设置web config transformations以在构建项目时动态更改它,方法是选择适当的配置(调试,发布等)。您可以使用它来用虚拟值替换密钥。