我正在考虑在Github上为我的实时网站开源代码。到目前为止,我一直在将代码存储在私人仓库中,我唯一担心的是有一些与我的生产环境相关的配置文件(数据库密码,API密钥等)我不想成为公开可见。
在不暴露私人数据的情况下开放此类项目的典型方法是什么?你只是维护两个回购,一个公共的和一个相同的私人数据,添加私人数据,偶尔合并两者之间?
答案 0 :(得分:8)
对于Git,我建议您向.gitignore
添加规则,以忽略包含敏感信息的文件(Mercurial为.hgignore
)。尽量将敏感信息保存在一个地方(例如设置文件)。如果你使用Web框架,这个信息通常在一个文件中(例如,在Django中,有一个带有DB信息,密钥等的settings.py文件)如果你的应用程序的各个部分都有根深蒂固的敏感信息,将信息分解成某种配置文件或对象。
如果您希望人们仍然知道数据的来源,请在虚拟数据中包含一个示例或虚拟文件,并在某处(在文件或自述文件中)表示文件必须更改。然后,您可以为该文件命名,例如settings.py.example
并忽略真实的settings.py
。
保留多个回购是个坏主意。只需省略敏感数据,并确保明显忽略了 ,缺少,以便人们仍然可以重复使用您的工作。
答案 1 :(得分:0)
从逻辑上讲,如果不透露您的敏感信息,您只能做两件事:
我个人不想复制存储库,如果你需要直接从VCS部署,那么你几乎只剩下选项2.显然它将取决于你的框架,但在.NET中,例如,我' d确保你的连接字符串和API密钥存储在web.config中然后它被正确加密(我在OWASP Top 10 for .NET developers part 6: Security Misconfiguration的“加密敏感配置数据”部分中讨论这个。)
使用这种方法,您将所需的信息放入配置文件中,以便它可以在发生加密但不在其他地方的计算机上成功执行。尝试在另一台计算机上运行该应用程序,由于密钥不同,将抛出异常。