2013-04-07 195 views
1

我一直在使用gitignore在我的Ruby on Rails應用程序上進行密碼/密鑰保護,這樣我的配置文件就不會提交給Github上的公衆可用的視圖。gitignore與環境變量Ruby on Rails

通過Github開發人員的API教程建議使用環境變量來存儲這些變量。如果我沒有部署,是否有任何理由我不應該使用gitignore來存儲我的密鑰?

回答

1

沒有什麼強烈的理由可以選擇環境變量而不是文件,但我不確定依靠.gitignore並將文件保留在源代碼樹中我會感到放心。如果您選擇文件,您可能需要考慮將它們移到源代碼樹之外以避免任何錯誤。

如果您在過去的任何時間點(特別是像GitHub這樣的公共站點)提交了這些文件,那麼稍後將它們添加到.gitignore不會刪除已提交的先前版本的副本;他們仍然在存儲庫中,並且有人可以瀏覽到他們未被忽略的版本。

此外,根據您運行應用程序的方式,將它們與應用程序放在同一目錄中可能會使您更容易受到基於Web的安全漏洞的攻擊。如果您將它們放在應用程序樹之外,則可能會受到一定程度的保護,以防止利用漏洞從應用程序樹中讀取任意數據。我不知道這是多麼令人擔憂的問題(可以在應用程序樹中讀取的漏洞也可能在其外部讀取),但將它們保存在另一個目錄中並不會造成什麼影響。

我傾向於喜歡環境變量,因爲它使得部署到Heroku更容易,所以我在開發中也使用它們。除了簡單的登錄/密碼對(RSA密鑰等)之外,我可能會使用一個文件,並將其存儲在我的主目錄或/var/lib/etc/usr/local或某處。

0

有專爲解決這類問題專門

費加羅寶石:https://github.com/laserlemon/figaro

在nutshel,費加羅提供一個清潔,簡單的方法來配置你的應用程序,並保持私人的東西...私人。

所有的密碼,API密鑰和任何機密信息都可以保存在本地yml中,不會被推送到遠程git倉庫。

+0

我會檢查這個寶石。非常感謝! – fayeishere 2013-04-07 04:45:15