class Rack::InvalidUriProtector

Constants

SANITIZE_ENV_KEYS
VERSION

Public Class Methods

new(app) click to toggle source
# File lib/rack/invalid_uri_protector.rb, line 12
def initialize(app)
  @app = app
end

Public Instance Methods

call(env) click to toggle source
# File lib/rack/invalid_uri_protector.rb, line 16
def call(env)
  SANITIZE_ENV_KEYS.each do |key|
    string = env[key].to_s
    valid = URI.decode(string).force_encoding('UTF-8').valid_encoding?
    # Don't accept requests with invalid byte sequence
    return [400, {}, ['Bad request']] unless valid
  end

  @app.call(env)
end