我一直在使用gitignore在我的Ruby on Rails應用程序上進行密碼/密鑰保護,這樣我的配置文件就不會提交給Github上的公衆可用的視圖。gitignore與環境變量Ruby on Rails
通過Github開發人員的API教程建議使用環境變量來存儲這些變量。如果我沒有部署,是否有任何理由我不應該使用gitignore來存儲我的密鑰?
我一直在使用gitignore在我的Ruby on Rails應用程序上進行密碼/密鑰保護,這樣我的配置文件就不會提交給Github上的公衆可用的視圖。gitignore與環境變量Ruby on Rails
通過Github開發人員的API教程建議使用環境變量來存儲這些變量。如果我沒有部署,是否有任何理由我不應該使用gitignore來存儲我的密鑰?
沒有什麼強烈的理由可以選擇環境變量而不是文件,但我不確定依靠.gitignore
並將文件保留在源代碼樹中我會感到放心。如果您選擇文件,您可能需要考慮將它們移到源代碼樹之外以避免任何錯誤。
如果您在過去的任何時間點(特別是像GitHub這樣的公共站點)提交了這些文件,那麼稍後將它們添加到.gitignore
不會刪除已提交的先前版本的副本;他們仍然在存儲庫中,並且有人可以瀏覽到他們未被忽略的版本。
此外,根據您運行應用程序的方式,將它們與應用程序放在同一目錄中可能會使您更容易受到基於Web的安全漏洞的攻擊。如果您將它們放在應用程序樹之外,則可能會受到一定程度的保護,以防止利用漏洞從應用程序樹中讀取任意數據。我不知道這是多麼令人擔憂的問題(可以在應用程序樹中讀取的漏洞也可能在其外部讀取),但將它們保存在另一個目錄中並不會造成什麼影響。
我傾向於喜歡環境變量,因爲它使得部署到Heroku更容易,所以我在開發中也使用它們。除了簡單的登錄/密碼對(RSA密鑰等)之外,我可能會使用一個文件,並將其存儲在我的主目錄或/var/lib
或/etc
或/usr/local
或某處。
有專爲解決這類問題專門
費加羅寶石:https://github.com/laserlemon/figaro
在nutshel,費加羅提供一個清潔,簡單的方法來配置你的應用程序,並保持私人的東西...私人。
所有的密碼,API密鑰和任何機密信息都可以保存在本地yml中,不會被推送到遠程git倉庫。
我會檢查這個寶石。非常感謝! – fayeishere 2013-04-07 04:45:15