開発したアプリなど一覧

Rails 6 にしたら Blocked host: というエラーが発生した場合の対処

既存の Web アプリの Rails バージョンを 6 に上げたところ、以下のような Blocked host: というエラーが出るようになった。

Blocked host: lvh.me
To allow requests to lvh.me, add the following to your environment configuration:
config.hosts << "lvh.me"

Rails 6 からは DNS Rebuilding 攻撃を防ぐためにホスト名をホワイトリストに登録しなければならないらしい。エラーメッセージにあるように config.hosts にホスト名を指定すれば良い。

# config/environments/development.rb

Rails.application.configure do
  # 省略
  config.hosts << 'lvh.me
  # . を付けるとサブドメイン全て利用可能になる
  config.hosts << '.lvh.me'
  # 正規表現も利用可能
  config.hosts << /[a-z0-9]*\.lvh\.me/
end

config.hosts にはこのように正規表現を利用したり、複数指定することができる。

もしくは以下のように hosts.clear を指定すると全てのホスト名でアクセス可能になる。

# config/environments/development.rb

Rails.application.configure do
  # 省略
  config.hosts.clear
end

ドメイン名を設定ファイルとかに書いてたらこんな感じで読み込んでやると良いかも。

domain = Settings.domain.gsub(':3000','')
config.hosts << domain
config.hosts << ".#{domain}"

Rails 6 使うなら覚えておくと良さそう。

Guard against DNS rebinding attacks by permitting hosts by gsamokovarov · Pull Request #33145 · rails/rails · GitHub

Sponsored Link

コメント

タイトルとURLをコピーしました