27
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Rails6 のちょい足しな新機能を試す78(Guard DNS rebiding attacks編)

Posted at

はじめに

Rails 6 に追加された新機能を試す第77段。 今回は、 Guard DNS rebiding attacks 編です。
Rails 6 では、 Rails.application.config.hosts= でアクセスを許可するサーバーを指定できるようになりました。
development 環境では、すべてのIPアドレス表記(0.0.0.0/0(IPv4) ::/0(IPv6)) のサーバーと localhost のみがデフォルトで許可されています。
それ以外の環境では、デフォルトでは制限がありません。

Ruby 2.6.3, Rails 6.0.0, Rails 5.2.3 で確認しました。

$ rails --version
Rails 6.0.0

今回は、 ngrok を使ってこの確認をしてみましょう。

プロジェクトを作る

$ bin/rails new rails_sandbox
$ cd rails_sandbox

rails server を起動する

$ bin/rails s

ngrok を起動する

$ ngrok http 3000

ngrok で表示された URL でアクセスする

https://xxxxxxxx.ngrok.io にアクセスしてみます。

ブラウザには、以下のようにブロックされたことが表示されます。

blocked host: xxxxxxxx.ngrok.io
To allow requests to xxxxxxxx.ngrok.io, add the following to your environment configuration:
config.hosts << "xxxxxxxx.ngrok.io"

config/environments/development.rb を編集する

ngrok を使ったアクセスを許可するように設定を変更します。
ngrok のサーバーは,起動するたびに毎回変わりますので、どれでも許可できるように .ngrok.io を追加します。

config/environments/development.rb
Rails.application.configure do
  ...
  config.hosts << '.ngrok.io'
end

再起動してから試す

rails serverngrok を再起動して試すと、今度は普通にアクセスできるようになります。

Rails 5 では

Rails 5.2.3 ではブロックされることはありません。

試したソース

試したソースは以下にあります。
https://github.com/suketa/rails_sandbox/tree/try078_guard_dns_rebiding_attack

参考情報

27
12
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
27
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?