なるようになるブログ

読書感想文かrailsについてかrubyについてか

rails commit log流し読み(2021/11/05)

2021/11/05分のコミットです。

CHANGELOGにのったコミットは以下の通りです。

actionpack/CHANGELOG.md


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)を使用するよう修正しています。