我正在一个网站上工作,该网站将允许用户使用来自Twitter,Google等的OAuth凭据登录。为此,我必须在这些提供商处注册并获得我拥有的超级秘密API密钥用誓言保护身体的各个部位。如果我的钥匙结了,那部分就被拉了。
API密钥必须随我的源一起传送,因为它在运行时用于执行身份验证请求。就我而言,密钥必须存在于应用程序中的配置文件中或代码本身中。当我在一台计算机上进行构建和发布时,这不是问题。但是,当我们将源代码管理混为一谈时,事情就会变得更加复杂。
因为我是个贱人,所以我更喜欢在云或GitHub中使用免费的源代码控制服务,例如TFS。这给我带来了一个小难题:
当我的API密钥在代码中并且我的代码可在公共存储库中使用时,如何保持身体完整?
我可以想到许多方法来解决此问题,但是没有一种方法令人满意。
- 我可以从代码中删除所有私人信息,并在部署后重新编辑。实施起来会很痛苦(我不会在很多方面详述),并且不是一种选择。
- 我可以加密它。但是,由于我必须解密它,因此任何有消息来源的人都可以弄清楚该怎么做。无意义。
- 我可以支付私人来源控制的费用。哈哈j / k花钱了吗?请。
- 我可以使用语言功能将敏感信息与我的其余源代码隔离开,从而使它不受源代码控制。这就是我现在正在做的事情,但是如果错误地检查机密文件,很容易搞砸。
我真的在寻找一种有保证的方式,以确保我不会与世界共享我的私人信息(除了在手套上),这将通过开发,调试和部署而流畅地运行,并且也非常安全。这是完全不现实的。 那我该怎么办呢?
技术细节:VS2012,C#4.5,源代码管理将是TF服务或GitHub。当前使用分部类将敏感键拆分到一个单独的.cs文件中,该文件不会添加到源代码管理中。我认为GitHub可能具有优势,因为.gitignore可以用于确保不检入部分类文件,但是我之前已经搞砸了。我希望有一个“哦,常见的问题,这就是你的做法”,但我可能不得不满足于“没有那么多的吸引力”,:/