Sha256: 2d24e7513e0fffb22fa3f103d73eee2b2d060161e677fc1fc0f85d21bb0c349e
Contents?: true
Size: 601 Bytes
Versions: 3
Compression:
Stored size: 601 Bytes
Contents
require 'uri' module InvalidUTF8Rejector class Middleware def initialize(app) @app = app end def call(env) if request_uri_clean?(env) @app.call(env) else [400, {}, [""]] end end private def request_uri_clean?(env) clean_utf8?(env["PATH_INFO"]) and clean_utf8?(env["QUERY_STRING"]) end 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 end end
Version data entries
3 entries across 3 versions & 1 rubygems