我正在开发一个c#程序,它从Web服务中检索信息,并使用API密钥进行身份验证。
目前我在我的程序中硬编码了这个值,但由于我想将代码保存在公共github存储库中,我必须在提交之前手动删除它。
什么是更自动化的方法来阻止我在代码中意外提交API密钥?
我正在考虑创建一个脚本,在Visual Studio中使用pre / post-build命令执行选项添加秘密。这样我就不必在代码中保留API密钥,并且在构建之后它将被删除,因此不会意外地提交它。
答案 0 :(得分:2)
使用configuration file或Windows Registry。
我还建议加密它,在Windows上你可以使用Data Protection API(DPAPI)。 .Net 2.0+有一个类调用ProtectedData,使用起来非常简单。这样,如果您确实提交了配置,则密钥仍然是加密的,并且只能在您的计算机上运行,甚至也适用于该计算机上的用户,具体取决于您的数据保护范围。你想要让某些人输入一把钥匙在他们的机器上使用。
答案 1 :(得分:0)
您可以将其添加到web.config并设置web config transformations以在构建项目时动态更改它,方法是选择适当的配置(调试,发布等)。您可以使用它来用虚拟值替换密钥。