source at :
def params
super
rescue Rack::Utils::ParameterTypeError, Rack::Utils::InvalidParameterError => e
raise BadRequest, "Invalid query parameters: #{e.message}"
end
demo code
# server.rb
require 'sinatra'
# yes ... it empty just require sinatra gem
call curl like
curl -i 'http://127.0.0.1:4567/' --data $'" %x\\"> <script>alert(1)</script>"'
return
HTTP/1.1 400 Bad Request
Content-Type: text/html;charset=utf-8
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
Content-Length: 81
Invalid query parameters: invalid %-encoding (" %x\"> <script>alert(1)</script>")
I know it 400 , but the error message can be HTML ... & no way to disable / filter it ...
and you can use code like this to overwrite it
module Sinatra
class Request < Rack::Request
def params
super
rescue Rack::Utils::ParameterTypeError, Rack::Utils::InvalidParameterError => e
raise BadRequest, "404"
end
end
end
source at :
sinatra/lib/sinatra/base.rb
Line 78 in 3fa1f2c
demo code
call curl like
return
I know it 400 , but the error message can be HTML ... & no way to disable / filter it ...
and you can use code like this to overwrite it