我已经安装了最新版本的Brakeman gem来帮助我提高Rails应用程序的安全性。
我在两台服务器上有几个Rails应用程序,一台用于开发,另一台用于生产。当我在我的应用程序上运行Brakeman报告时,大多数都标记了config/initializers/secret_token。
Session secret should not be included in version control near line 7
这是我几个月前运行旧版的Brakeman以来第一次看到这个错误。
根据我目前的研究,当 Rails new appname执行时,Rails会自动生成秘密令牌。直到现在我才意识到。显然,Rails不保护这个文件,如果我决定将我的任何应用程序移动到Github的信息将提供给任何人在Github访问应用程序。此时,我没有上传到GitHub,但我想了解如何从配置/初始化器/secret_token移动secure_token的信息。为了关闭我的应用程序中的安全漏洞。
我读到的一篇博客文章建议我将秘密令牌注入到ENV变量中。将语句从config/initializers/secret_token中移出。Rb到config/environment。如何解决问题?如果是这样,我将把这个任务添加到我的Rails开发任务列表中。
当我将秘密信息放入ENV
变量时,Brakeman中的特定信息为我沉默了,正如您所提到的。就我个人而言,我喜欢使用Figaro宝石,但我认为dotenv也很受欢迎。
您可能对此感兴趣的其他一些资源是:
- Code Climate博客条目:Rails不安全的默认代码
- StackOverflow线程:应该从Ruby on Rails的公共源代码控制中删除什么?
我不确定将会话秘密移动到另一个文件中会有什么不同。从本质上讲,秘密令牌应该像密码一样被对待。
这篇来自Phusion的博客文章探讨了在部署时提供会话密钥的几种不同选项。