Closed3
Rails の request.host って信用できるの?
Rails の request.host
を使って何かを判断している場合、それは偽装可能な可能性があるので注意。
curl -H 'Host: example.org' http://localhost
などで偽装できるが、設定値で防ぐことが可能
-
Rails.application.config.hosts
に値を設定している場合、HostAuthorization
ミドルウェアが有効になるので、これに含まれないHost
ヘッダを指定するとエラーとなる。[ActionDispatch::HostAuthorization::DefaultResponseApp] Blocked hosts: example.org
- development環境だと
Rails.application.config.hosts
はデフォルトで値が入るので、有効になっている。 - production環境だとデフォルトで空なので、有効となっていない
Link
ActionDispatch::Http::URL#host
request.host
は HTTP_HOST
を返す
Hostの偽装を防ぐミドルウェア HostAuthorization
設定方法 Railsガイド
このスクラップは22日前にクローズされました