我开发了一个Web应用程序并将其源代码推送到公共Github存储库。问题是PHP代码包含其他人不应该看到的数据库凭据。
现在我正在寻找一种处理这个问题的好方法。我可以使用.gitignore
从Git存储库中排除配置文件,但是其他人不会看到用于创建自己配置的结构。另一方面,我不想手动替换每次提交的真实凭证。
在开源软件的源代码中处理这些敏感信息的好方法是什么?
答案 0 :(得分:5)
在这些情况下我通常做的是允许两层配置,其中默认的属性集是使用源进行版本化和提交的,但是开发人员可以提供将在发现时使用的外部文件,并将替换默认设置基于每个设置。这不仅对外部化凭据很有用,而且还允许您默认诸如线程数,连接池大小等的内容。如果需要,可以覆盖这些内容。重要的是,他们总能看到完整的结构。您自己将拥有自己的外部覆盖文件,其中包含您使用的真实凭据。但默认值是你签到的假的。
我知道你使用的是PHP,对于java来说,它看起来大致如下:
Properties defaultProps = loadDefaults();
Properties overrideProps = loadOverridesIfFound();
for(String name : overrideProps.keySet()) {
defaultProperties.put(name,overrideProps.get(name));
}
我发现这种技术对许多项目非常有效。
答案 1 :(得分:1)
您可以简单地.gitignore
实际配置文件,并添加带有后缀(configDefault.php)
的空副本。这还为您提供了一种方法,可以确保用户在运行应用程序之前实际检查配置。