2013-04-07 155 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