2016-09-17 118 views
0

我正在制作一个Rails应用程序,并试图理解安全性,因为它涉及到密钥。了解安全和密钥

我的项目使用Rails 5和Devise gem。

我在几个地方看过,你不想把secretts.yml这样的文件放在github上,出于安全原因(我发现了几条提交的道路)。但是,我在生产中使用的密钥是环境变量(虽然我的开发和密钥不是,但可以看到它们)。

我现在想弄明白的是,像secrets.yml这样的文件(我也听说过有关database.yml的一些东西),它已经在github上结束了,只要重要的位(比如密钥)是环境变量,幸运的是Rails在默认情况下似乎已经想到了?或者我应该通过删除这些文件的努力?

回答

0

如果您删除敏感信息(将其替换为环境变量),那么您可以提交该文件。这不仅仅是secrets.yml。任何加密密钥,API密钥,凭证都不应该提交给Git。

如果您已经将这些信息推送到Git,那么可以通过执行Rebase将其删除,但这并不能保证每个副本都被删除。改变这个秘密会更好。

这将意味着使用环境变量,设置环境中的现有值,然后在某个点为密钥生成新值并更改环境变量。

更改秘密将使任何现有的用户会话无效,因此最好是提前通知用户,并在最少的用户使用该网站的时间内完成。

直到您更改秘密值,您的网站才会受到攻击。

+0

正如我在另一条评论中提到的,我的secrets.yml(我相信其他重要文件也是如此),本质上看起来就像我在本评论结尾列出的内容。从我的回答中了解到,似乎我应该是安全的,只要生产secret_key_base是一个环境变量,通常推送像secrets.yml这样的信息就没有问题了。这就是我的秘密。yml看起来像>>> development:secret_key_base:abc123youcanseethiskey test:secret_key_base:123456ghgyoucanseethiskey production:secret_key_base:<%= ENV [“SECRET_KEY_BASE”]%> – mc92

+0

这并不包含实际的生产密钥。开发和测试密钥不是敏感信息。所以不需要担心这个文件,它的目的就是像这样被检入到Git中。 –

0

“什么我想现在弄清楚,是它精致,像secrets.yml文件(我也听说database.yml的一些事情为好),已经结束了在github上,”

切勿向Github回购站提交个人/敏感信息。

无论文件名是什么,如果它有敏感信息,请勿将其推送到远程回购站。

+0

它已经被推,我问的是如果我应该通过几次提交之后去除它的努力。它(secrets.yml)本质上是这样的: 发展: secret_key_base:abc123youcanseethiskey 测试: secret_key_base:123456ghgyoucanseethiskey 生产: secret_key_base:<%= ENV [ “SECRET_KEY_BASE”]%> 我是什么试图理解,是否这种特别的方式足够安全,你的回答并没有让我明白。 – mc92

+0

如果你已经犯了它,我会尽快改变我的钥匙。您也可以兑换,但是您的钥匙可能已被刮掉。 – hetre85