Ruby on Rails 6 でWebアプリケーションを作っていたら、以下のように「Blocked host: …. 」というエラー画面が出ました。
どうやら私が現在使用しているホスト名でアクセスできない状態になっているようです。
Ruby on Rails 5 では出なかったエラーだったので、備忘録も兼ねて原因、解決策を記事にしてみました。
目次
1.なぜ「Blocked host: …. 」というエラーが出たのか?
なぜ、「Blocked host: …. 」というエラーが出るようになったのでしょうか?
Ruby on Rails 6からDNS REBINDING攻撃を防ぐためにホスト名をホワイトリストに登録しなければいけない仕様になったそうです。
この仕様はdevelopment環境のみで有効となっています。
そもそもDNS REBINDING攻撃とは何かという所から見ていきましょう。
ドメイン名に対応するIPアドレスを短期間に変更することにより、罠サイトに仕掛けたJavaScriptから攻撃対象サイトに対して同一生成元ポリシーの範囲で攻撃する手法のことです。
少々、分かりづらいですね、、
つまり、攻撃者がDNS REBINDINGを用いて通常アクセスできないローカル環境にアクセスする攻撃のようです。
こわい、、
DNS REBINDING攻撃とはどのようなものか把握できたので、次にエラーをどのように解決するのか見ていきましょう。
2.解決方法
「Blocked host: …. 」というエラーの解決方法としてアクセスするホスト名を特定のファイルに登録する必要があります。
ホスト名の登録は「development.rb」に行います。
以下のように「development.rb」にホスト名を追加しましょう。
上記では「”ホスト名”」と記述されていますが、ここに許可したいホスト名を適宜入力しましょう。
ホスト名を入力してサーバーを再起動してアクセスするとエラーが無事解消されました。