9

我已经安装了最新版本的 Brakeman gem 来帮助我提高 Rails 应用程序的安全性。

我在两台服务器上有几个 Rails 应用程序,一个用于开发,另一个用于生产。当我对我的应用程序运行 Brakeman 报告时,它们中的大多数都将 config/initializers/secret_token.rb 标记为具有以下高安全漏洞。

Session secret should not be included in version control near line 7

这是我几个月前运行旧版本的 Brakeman 以来第一次看到这个错误。

根据我目前的研究,Rails 在执行rails new appname时会自动生成秘密令牌。直到现在我才意识到这一点。显然 Rails 不保护这个文件,如果我决定将我的任何应用程序移动到 Github,那么在 Github 访问该应用程序的任何人都可以使用该信息。目前我没有上传到 GitHub,但我想了解如何从 config/initializers/secret_token.rb 移动 secure_token 以关闭我的应用程序中的安全漏洞。

我读过的一篇博客文章建议我将秘密令牌注入 ENV 变量。将语句从 config/initializers/secret_token.rb 移动到 config/environment.rb 会解决问题吗?如果是这样,我会将此任务添加到我在 Rails 开发中的任务列表中。

任何帮助,将不胜感激。

4

2 回答 2

12

ENV正如你所提到的,当我将秘密信息放入变量时,Brakeman 中的特定信息对我来说是沉默的。就个人而言,我喜欢为此使用Figaro gem,但我认为dotenv也很受欢迎。

您可能对此感兴趣的其他一些资源是:

于 2013-05-26T00:02:51.173 回答
1

我不确定将会话秘密移动到不同的文件会有什么不同。本质上,秘密令牌应该像密码一样对待。

Phusion 的这篇博文探讨了在部署时提供会话密钥的几种不同选项。

于 2013-05-25T16:52:46.950 回答