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