2013-01-19 15:26:14 +0900
Railsのセッションシークレットトークンをより安全に扱うようにしましょう、という話。
Railsアプリケーションの脆弱性をチェックしてくれるツール brakemanがアップデートして、年末年始にかけてアナウンスされたいくつかのRailsの脆弱性に対応しました。
アップデートしてスキャンしたところ、config.secret_token
の値がバージョン管理の対象になっているということでHighな警告がされました。
- Proposal: Add check for versioning secret_token · Issue #200 · presidentbeef/brakeman
- Securing the Rails session secret – Phusion Corporate BlogPhusion Corporate Blog
Phusionのブログエントリで5通りほどの対応策とおすすめ度が紹介されていて、5つ目の「環境変数の値があればそれを、なければデフォルト値を」というやつが、おすすめ度は低いけどHerokuで動かすアプリについては都合がよさそうなので採用することにしました。
config/initializers/secret_token.rb
を
Foo::Application.config.secret_token = ENV['SECRET_TOKEN'] || 'fallback_token_for_development'
のようにして、コマンドラインからHerokuの変数を設定。
$ heroku config:set SECRET_TOKEN=`bundle exec rake secret`