😈
【Brakeman】Railsで動的に生成される外部URLをリダイレクトさせたい
やりたいこと
- タイトルの通り、動的に生成される外部URLをリダイレクトさせたい
- 今回の場合は外部のヘルプページに飛ばしたい
問題
-
以下のようなコードだと、Brakemanに
Security Warns
と怒られるdef show target_path = params[:target_path] url = "<https://example.com/#{target_path}>" redirect_to url, allow_other_host: true end
※ちなみに
allow_other_host: true
は外部URLのリダイレクトを許容する設定Rails 7.0 アプリケーションのデフォルトで
config.action_controller.raise_on_open_redirects
がtrueになっているため、リクエストと異なるドメインへのリダイレクトを許可しないようになっている -
以下のような静的な外部URLは上手くリダイレクトされること確認済み
def show target_path = "faq" url = "<https://example.com/#{target_path}>" redirect_to url end
原因
- どうやらBrakemanが、動的な値が含まれているURLは例外が発生させているみたい
The code above will raise an exception if params[:url] does not match the current domain.
解決策
-
Brakemanのoptionsに記載がある通り、以下のコマンドで無視する処理を設定できるっぽい
bundle exec brakeman -I
- 基本的にこちらの記事に流れが記載されているので今回は割愛
参考サイト
Discussion