2013-11-03 60 views
1

我開發了一個Web應用程序,並將其源代碼推送到公共Github存儲庫。問題是PHP代碼包含數據庫證書,這些證書不應該被其他人看到。開發開放源代碼而不暴露憑據的好方法?

現在我正在尋找一種處理此問題的好方法。我可以使用.gitignore從Git存儲庫中排除配置文件,但其他人不會看到該結構來創建自己的配置。另一方面,我不想手動替換每次提交的真實憑證。

什麼是處理開源軟件源代碼中的敏感信息的好方法?

回答

5

我通常在這些情況下做的是允許兩層配置,其中默認的一組屬性是版本化的,並且與源一起提交,但是開發人員可以提供一個外部文件,如果發現它將被使用,每個設置的默認值。這不僅可用於外部化憑證,還可以讓您默認線程數,連接池大小等默認值,如果需要可以重寫。重要的是,他們總能看到完整的結構。你的自己會擁有你自己的外部覆蓋文件和你使用的真實憑證。但默認是您在查假的

我知道你正在使用PHP,爲Java爲例,它看起來大致是這樣的:

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

我發現這個技術是非常對許多項目有效。

+0

非常感謝,效果很好。 – danijar

1

您可以簡單地將.gitignore的實際配置文件添加到後綴爲(configDefault.php)的空副本中。這也爲您提供了一種方法來確保用戶在運行應用程序之前真正地檢查配置。

+0

config.php實際上是gitignored,所以它永遠不會推動被跟蹤的東西是configDefault.php,甚至沒有被實際的代碼讀取。 – Learath2