2013-05-25 14 views
9

Railsアプリケーションのセキュリティに役立つ最新のBrakeman gemをインストールしました。Ruby on Rails 3.2.13 - Brakeman - バージョン管理にセッションシークレットを含めないでください

2つのサーバー(開発用と運用用)に複数のRailsアプリケーションがあります。私がBrakemanのレポートを自分のアプリケーションで実行したとき、彼らの多くはconfig/initializers/secret_token.rbに以下の高いセキュリティ上の脆弱性があると警告しました。

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

私は数ヶ月前にBrakemanの古いバージョンを実行して以来、このエラーが発生したのは初めてのことです。

これまでにRailsは、の新しいアプリ名が実行されると自動的に秘密トークンを生成しました。私は今までそれを知らなかった。明らかにRailsはこのファイルを保護していません。アプリケーションをGithubに移動することに決めた場合、その情報はGithubの誰かがアプリケーションにアクセスできるようになります。現時点では私はGitHubにアップロードしていませんが、アプリケーションのセキュリティホールを閉じるために、config/initializers/secret_token.rbからsecure_tokenを移動する方法についての情報が必要です。

私が読んだ1つのブログ投稿では、秘密トークンをENV変数に注入することを提案しました。 config/initializers/secret_token.rbからconfig/environment.rbにステートメントを移動すると問題は解決しますか?もしそうなら、私はこのタスクをRails開発のタスクリストに追加します。

ご協力いただければ幸いです。

答えて

12

あなたが言及したように、私は秘密情報をENV変数に入れたとき、Brakemanのその特定のメッセージが私のために消されました。個人的には、これにはFigaroの宝石を使っていますが、dotenvも人気があります。

これに関して、あなたに関心のある他のいくつかのリソースは次のとおりです。

+1

私がENV変数について述べた提案は、Code Climateのブログ記事から得たものです。私は質問を投稿する前にそれを読む。私は質問を投稿したときにENV変数にする方法がわかりませんでした。しかし、私がenvironment.rbを見てみると、文のフォーマットが同じであることがわかりました。そこで私はsecret_tokenからそのステートメントをそこに移しました。メッセージは消えた。ブックマークにCode Climateのブログ記事があります。私は以前の検索で見たFigaroをチェックします。私はまたdotenvも見ていきます。 –

+5

environment.rbがソースコントロールに格納されている場合は、secret_token.rbより安全です。 – Justin

1

セッションシークレットを別のファイルに移動することでどのような違いが生じるのかよくわかりません。基本的に、秘密トークンはパスワードのように扱われるべきです。

This blog post from Phusionは、展開時にセッションキーを提供するためのいくつかの異なるオプションについて説明します。

+0

私はこれを読んで私の質問をする前に投稿してください。彼らは、Railsにパッチを当てるとともに、オプション2を提案しました。いくつかのオプションは、あなたがカピストラーノを使用していることを前提としています。私はそれを使用していない。私はまだRailsについて、特にセキュリティに関して学んでいます。残念ながら、ブログの投稿には私が慣れていない多くの情報があります。 –

関連する問題