Sooey

2013-01-19 15:26:14 +0900

Railsのセッションシークレットトークンをより安全に扱うようにしましょう、という話。

Railsアプリケーションの脆弱性をチェックしてくれるツール brakemanがアップデートして、年末年始にかけてアナウンスされたいくつかのRailsの脆弱性に対応しました。

アップデートしてスキャンしたところ、config.secret_tokenの値がバージョン管理の対象になっているということでHighな警告がされました。

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`