Ruby on rails 版本控制中不应包括RubyonRails3.2.13-Brakeman-SessionSecret

Ruby on rails 版本控制中不应包括RubyonRails3.2.13-Brakeman-SessionSecret,ruby-on-rails,security,brakeman,Ruby On Rails,Security,Brakeman,我已经安装了Brakeman gem的最新版本,以帮助我提高Rails应用程序的安全性 我在两台服务器上有几个Rails应用程序,一台用于开发,另一台用于生产。当我在我的应用程序上运行Brakeman报告时,大多数应用程序都标记了config/initializers/secret_token.rb,并带有以下高安全漏洞 Session secret should not be included in version control near line 7 这是我在几个月前运行旧版本的Brak

我已经安装了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_令牌,以关闭应用程序中的安全漏洞

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


任何帮助都将不胜感激。

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


探索了在部署时提供会话密钥的几个不同选项。

当我将机密信息放入
ENV
变量中时,Brakeman中的特定消息对我来说是无声的,如您所述。就我个人而言,我喜欢用宝石来做这个,但我认为它也很受欢迎

您可能对此感兴趣的其他资源包括:

  • 代码气候博客条目:关于代码气候的博客条目
  • 堆栈溢出线程:

我在提问之前阅读了这篇文章。他们建议使用选项2和配线架。有几个选项假设您正在使用Capistrano。我没有用它。我仍然在学习Rails,特别是关于安全性的知识。不幸的是,这篇博文中有很多我不熟悉的信息。我提到的关于ENV变量的建议来自CodeClimate博文。我在发布我的问题之前阅读了它。当我发布我的问题时,我不知道如何将其设置为ENV变量。但是,当我查看environment.rb时,我发现语句格式是相同的。所以我把这份声明从秘密令牌转移到了那里。消息消失了。我的书签中有代码气候博客帖子。我将查看我在以前的搜索中看到的费加罗。我还将研究dotenv。如果environment.rb存储在源代码管理中,那么它并不比secret_token.rb更安全。