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開発のタスクリストに追加します。
ご協力いただければ幸いです。
私がENV変数について述べた提案は、Code Climateのブログ記事から得たものです。私は質問を投稿する前にそれを読む。私は質問を投稿したときにENV変数にする方法がわかりませんでした。しかし、私がenvironment.rbを見てみると、文のフォーマットが同じであることがわかりました。そこで私はsecret_tokenからそのステートメントをそこに移しました。メッセージは消えた。ブックマークにCode Climateのブログ記事があります。私は以前の検索で見たFigaroをチェックします。私はまたdotenvも見ていきます。 –
environment.rbがソースコントロールに格納されている場合は、secret_token.rbより安全です。 – Justin