【问题标题】:What's the best way to deal with sensitve data while using a source control?使用源代码管理时处理敏感数据的最佳方式是什么?
【发布时间】:2010-10-27 10:27:49
【问题描述】:

最近我开始使用 codeplex.com 来托管我正在做的项目,我想与人们分享。我不熟悉使用源代码管理和开源处理。

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

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

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

每次推送代码之前我都必须清理敏感数据吗?

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 非常感谢纪尧姆。所以如果我想在本地测试我的项目,我应该在提交之前删除敏感数据,对吧。我希望我能从有经验的人那里得到更多的意见。
    猜你喜欢
    • 2011-12-12
    • 1970-01-01
    • 2013-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    相关资源
    最近更新 更多