8
0

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 1 year has passed since last update.

Rails7で外部URLのリダイレクトは例外が発生するようになった

Posted at

Rails7でリダイレクトの処理が少し変わったので見ていきます。

Rails のリダイレクト

Railsでは以下のように書くとリダイレクトすることができます。

# 内部URL
redirect_to root_path
# 外部URL
redirect_to 'https://example.com'

Rails7 のリダイレクト

Rails7からは Open Redirect protection がデフォルトとなり、外部のURLにリダイレクトするとUnsafeRedirectError発生するようになりました(内部のURLにリダイレクトするときは今まで通りです)

例外を発生させないようにするために、allow_other_host: trueを設定する必要があります。

redirect_to 'https://example.com', allow_other_host: true

URLが内部URLかチェックする

パラメータでURLを渡す場合は、外部のURLになる可能性もあります。UnsafeRedirectErrorをキャッチしても良いですが、内部URLかチェックするためにurl_fromを使うことができます。もし外部URLの場合はnilが変えるので、フォールバックするURLを書いておきましょう。

redirect_to url_from(params[:redirect_url]) || root_url

References

8
0
0

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
8
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?