使用源代码控制时处理敏感数据的最佳方法是什么?

时间:2010-10-27 10:27:49

标签: visual-studio-2010 version-control tortoisehg

最近我开始使用codeplex.com来托管我正在做的项目,我想与人们分享。我是使用Source Control和开源处理的新手。

我的应用程序处理Twitter,当然我必须使用Twitter API密钥。

我正在使用Visual Studio 2010和TortoiseHg进行源代码管理。

所以我的问题是:如何在不共享敏感数据(如API密钥)的情况下推送代码? 我不应该分享这些钥匙,对吗? Twitter API密钥,TwitPic API密钥,Plixi API密钥......

在推送代码之前,我是否每次都要清理敏感数据?

另外,您能告诉我在哪里可以学习使用源代码管理的最佳实践吗?

1 个答案:

答案 0 :(得分:3)

您应该将所有敏感信息外部化为专用属性文件。应从源代码管理中排除此文件。大多数(如果不是全部)源控制系统将允许您将文件标记为不进行版本控制。我不是特别了解Hg,但.hgignore似乎就是这个地方。

从存储库中删除信息时,所有源代码控制系统都特别烦人。我们几乎可以认为它们是为了记录项目的完整历史而创建的;-)因此,一旦错误地提交了API密钥(而不是我曾经做过类似的事情),请准备好更改它。

编辑,因为我似乎不够清楚:

最重要的部分是将敏感信息与标准信息明确区分开来。您应该有一个包含敏感且仅包含敏感信息的文件。然后将此文件标记为“未版本化”。如果你不这样做,你总会最终提交你的敏感信息。一旦他们出去,几乎没有办法让他们消失。

另一种方法是加密敏感数据,提交加密数据并使解密密钥仅存在于服务器上(或远离版本控制系统的其他精心控制的位置)。我们实际上在我工作的私人银行使用这个解决方案,这样开发人员就无法访问生产系统的密码。