class InvalidUTF8Rejector::Middleware
Public Class Methods
new(app)
click to toggle source
# File lib/invalid_utf8_rejector/middleware.rb, line 5 def initialize(app) @app = app end
Public Instance Methods
call(env)
click to toggle source
# File lib/invalid_utf8_rejector/middleware.rb, line 9 def call(env) if request_uri_clean?(env) @app.call(env) else [400, {}, [""]] end end
Private Instance Methods
clean_utf8?(str)
click to toggle source
# File lib/invalid_utf8_rejector/middleware.rb, line 23 def clean_utf8?(str) return true if str.nil? URI.decode_www_form_component(str).force_encoding('UTF-8').valid_encoding? rescue ArgumentError # triggered by an invalid % encoded string. false end
request_uri_clean?(env)
click to toggle source
# File lib/invalid_utf8_rejector/middleware.rb, line 19 def request_uri_clean?(env) clean_utf8?(env["PATH_INFO"]) and clean_utf8?(env["QUERY_STRING"]) end