Closed3

Rails の request.host って信用できるの?

oieioioieioi

Rails の request.host を使って何かを判断している場合、それは偽装可能な可能性があるので注意。

curl -H 'Host: example.org' http://localhost などで偽装できるが、設定値で防ぐことが可能

oieioioieioi
  • Rails.application.config.hosts に値を設定している場合、HostAuthorization ミドルウェアが有効になるので、これに含まれない Host ヘッダを指定するとエラーとなる。
    • [ActionDispatch::HostAuthorization::DefaultResponseApp] Blocked hosts: example.org
  • development環境だと Rails.application.config.hosts はデフォルトで値が入るので、有効になっている。
  • production環境だとデフォルトで空なので、有効となっていない

https://github.com/rails/rails/blob/fecd069738fed649e85a31f94b47575104b959b4/railties/lib/rails/application/configuration.rb#L38-L43

https://github.com/rails/rails/blob/a1f6a13f691e0929d40b7e1b1e0d31aa69778128/actionpack/lib/action_dispatch/middleware/host_authorization.rb#L23

このスクラップは22日前にクローズされました