事例:open-uriでの無限リダイレクト
open-uriではレスポンスの内容からデフォルトでHTTPリダイレクトを行う
Net::HTTP単体で使用する場合はリダイレクトされない
v0.4.1以下ではリダイレクト回数に制限がない
リダイレクト先が同じURLであればエラーになる
サーバが毎回違うリダイレクト先を指定し続けるとリダイレクトによるDoSが発生する
#todo
v0.4.1 からはmax_redirects: の設定が追加できるようになった
https://github.com/ruby/open-uri/pull/18
確認コード(Github)
code:redirect_test.rb
require 'open-uri'
# URI.open("http://0.0.0.0:9292")
# => 無限リダイレクトする
URI.open("http://0.0.0.0:9292", max_redirects: 2)
# => Too many redirects (OpenURI::TooManyRedirects)
code:ruby
❯ ruby redirect_test.rb
.../open-uri.rb:243:in `open_loop': Too many redirects (OpenURI::TooManyRedirects)
#事例