2021/11/05分のコミットです。
CHANGELOGにのったコミットは以下の通りです。
- Add
url_from
to verify a URL is internal and safe to redirect to - Raise
ActionController::Redirecting::UnsafeRedirectError
for unsaferedirect_to
redirects.
Add url_from
to verify a URL is internal and safe to redirect to
actionpack/lib/action_controller/metal/redirecting.rb
の修正です。
指定されたURLがinternal URLどうかをチェックするurl_from
メソッドを追加しています。指定されたURLがinternal URLならその値を、そうでない場合はnilを返すようになっています。
# `request.host`が`example.com`の場合 url_from("https://example.com/profile") # => "https://example.com/profile" url_from("http://example.com/profile") # => "http://example.com/profile" url_from("http://evil.com/profile") # => nil url_from("https://dev.example.com/profile") # => nil
redirect_to url_from(params[:redirect_url]) || root_url
のように、paramに指定された値が有効な場合その値を、そうでない場合はrootに飛ばす、というような使いかたを想定しているとの事です。
Replace complex conditional logic with an explaining comment
actionpack/lib/action_controller/metal/redirecting.rb
の修正です。
redirect_back_or_to
でfallback先にredirectする際に、不要なallow_other_host
オプションの指定を削除しています。
[ci skip] Explain redirect_to's open redirect protection, how to enable etc.
actionpack/lib/action_controller/metal/redirecting.rb
のdocの修正です。
redirect_to
メソッドのdocに、open redirect protectionの挙動についての説明を追加しています。
Raise ActionController::Redirecting::UnsafeRedirectError
for unsafe redirect_to
redirects.
actionpack/lib/action_controller/metal/redirecting.rb
の修正です。
redirect_to
のredirect先に不正なURLが指定された場合のexceptionを独自のexception(ActionController::Redirecting::UnsafeRedirectError
)を使用するよう修正しています。