LoginSignup
2
0

More than 1 year has passed since last update.

Blocked hostエラーが出た時の対処法

Posted at

①やりたいこと
Rails6の本番環境でrails sをしたときにBlocked hostエラーが発生しました。



②エラー内容
e322b88f1ab7ec7e6f5ef601ef851134.png

今回の対処法は以下の記事を参考にさせていただきました!
https://qiita.com/kodai_0122/items/67c6d390f18698950440

③原因
DNSリバインディング攻撃を防止する ActionDispatch::HostAuthorization middleware によるものらしい、、(Rails6から追加された機能です)



④解決策
3つありますが、基本的には一つ目の解決方法でOKです。筆者も一つ目で解決しました。

  1. Rails.application.config.hosts に接続先として許可する Host を追加する development 環境では、 default で Rails.application.config.hosts に下記の Host が登録されています。 これ以外の Host 名として接続しようとすると、ブロックされるため、必要な Host 名を追加します。
 Rails.application.config.hosts = [
   IPAddr.new("0.0.0.0/0"), # All IPv4 addresses.
   IPAddr.new("::/0"),      # All IPv6 addresses.
   "localhost"              # The localhost reserved domain.
 ]

追加方法は development 環境であれば、 config/environment/deveropment.rbに下記のように記述します。

Rails.application.configure do
  config.hosts << "d4e14c8c945545778d2fc824d6ee6181.vfs.cloud9.ap-northeast-1.amazonaws.com"
end

2. Rails.application.config.hosts の設定を clear する

Rails.application.config.hosts は、空の場合は Host ヘッダーのチェックが行われないため、ブロックされなくなります。
development 環境以外の環境 (たとえば production ) では、 Rails.application.config.hosts は default で空のため、チェックは行われません。

development 環境で Host ヘッダーのチェックを行わないようにするには、 config/environments/development.rb に下記のように記述します。

Rails.application.configure do
    config.hosts.clear
end

なお、アプリケーションの前段に Host ヘッダーを識別して振り分けを行う LB 等がない場合は、DNSリバインディング攻撃が防止できなくなるため、 development 環境以外では Rails.application.config.hosts を適切に設定されることをおすすめします。

3. ActionDispatch::HostAuthorization middleware を使わないようにする

アプリケーションの前段に Host ヘッダーを識別して振り分けを行う LB 等があり、アプリケーション自体でDNSリバインディング攻撃を防止する必要がない場合は、 ActionDispatch::HostAuthorization middleware 自体をロードされないように設定します。

config/application.rb に下記のように記述します。

module HogeApp
  class Application < Rails::Application
    onfig.middleware.delete ActionDispatch::HostAuthorization
  end
end



開発環境
mac OS バージョン11.6

Rails 6.1.4.4
Ruby 3.0.0
MYSQL 0.5

エディタ
Cloud9

2
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0