mirror of
https://github.com/mperham/sidekiq.git
synced 2022-11-09 13:52:34 -05:00
Add pessimistic regexp on queue name input to avoid XSS, fixes #4852
This commit is contained in:
parent
2a57abc5e5
commit
64f70339d1
3 changed files with 11 additions and 2 deletions
|
@ -15,7 +15,7 @@ module Sidekiq
|
||||||
end
|
end
|
||||||
|
|
||||||
def halt(res)
|
def halt(res)
|
||||||
throw :halt, res
|
throw :halt, [res, {"Content-Type" => "text/plain"}, [res.to_s]]
|
||||||
end
|
end
|
||||||
|
|
||||||
def redirect(location)
|
def redirect(location)
|
||||||
|
|
|
@ -82,10 +82,12 @@ module Sidekiq
|
||||||
erb(:queues)
|
erb(:queues)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
QUEUE_NAME = /\A[a-z_:.\-0-9]+\z/i
|
||||||
|
|
||||||
get "/queues/:name" do
|
get "/queues/:name" do
|
||||||
@name = route_params[:name]
|
@name = route_params[:name]
|
||||||
|
|
||||||
halt(404) unless @name
|
halt(404) if !@name || @name !~ QUEUE_NAME
|
||||||
|
|
||||||
@count = (params["count"] || 25).to_i
|
@count = (params["count"] || 25).to_i
|
||||||
@queue = Sidekiq::Queue.new(@name)
|
@queue = Sidekiq::Queue.new(@name)
|
||||||
|
|
|
@ -124,6 +124,13 @@ describe Sidekiq::Web do
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'handles queue view' do
|
it 'handles queue view' do
|
||||||
|
get '/queues/onmouseover=alert()'
|
||||||
|
assert_equal 404, last_response.status
|
||||||
|
|
||||||
|
get '/queues/foo_bar:123-wow.'
|
||||||
|
assert_equal 200, last_response.status
|
||||||
|
assert_match(/foo_bar:123-wow\./, last_response.body)
|
||||||
|
|
||||||
get '/queues/default'
|
get '/queues/default'
|
||||||
assert_equal 200, last_response.status
|
assert_equal 200, last_response.status
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Reference in a new issue