【问题标题】:Good way to develop Open Source without exposing credentials?在不暴露凭据的情况下开发开源的好方法?
【发布时间】:2013-11-03 12:06:44
【问题描述】:

我开发了一个 Web 应用程序并将其源代码推送到公共 Github 存储库。问题是 PHP 代码包含其他人不应该看到的数据库凭据。

现在我正在寻找一种处理此问题的好方法。我可以使用.gitignore 从 Git 存储库中排除配置文件,但其他人看不到创建自己配置的结构。另一方面,我不想手动替换每次提交的真实凭据。

在开源软件的源代码中处理这些敏感信息的好方法是什么?

【问题讨论】:

    标签: git github open-source publish credentials


    【解决方案1】:

    在这些情况下,我通常做的是允许两层配置,其中默认属性集是版本化的,并与源一起提交,但是开发人员可以提供一个外部文件,如果发现该文件将被使用,并将替换以每个设置为基础的默认值。这不仅对外部化凭据有用,而且还允许您默认线程数、连接池大小等,如果需要,可以覆盖这些内容。重要的是,他们始终可以看到完整的结构。您自己将拥有自己的外部覆盖文件,其中包含您使用的真实凭据。但是默认值是你签入的假的。

    我知道你使用的是 PHP,以 java 为例,大概是这样的:

    Properties defaultProps = loadDefaults();
    Properties overrideProps = loadOverridesIfFound();
    for(String name : overrideProps.keySet()) {
       defaultProperties.put(name,overrideProps.get(name));
    }
    

    我发现这种技术对许多项目都非常有效。

    【讨论】:

      【解决方案2】:

      您可以简单地.gitignore 实际配置文件并添加一个带有后缀(configDefault.php) 的空副本。这也为您提供了一种确保用户在运行应用程序之前实际检查配置的方法。

      【讨论】:

      • config.php 实际上是 gitignored,所以它永远不会推送唯一被跟踪的是 configDefault.php,它甚至不会被实际代码读取。
      猜你喜欢
      • 1970-01-01
      • 2016-05-02
      • 1970-01-01
      • 1970-01-01
      • 2018-05-12
      • 2010-09-14
      • 1970-01-01
      • 1970-01-01
      • 2019-07-13
      相关资源
      最近更新 更多