diff --git a/lib/rack/uri_sanitizer.rb b/lib/rack/uri_sanitizer.rb index 5c80e40..92c11d8 100644 --- a/lib/rack/uri_sanitizer.rb +++ b/lib/rack/uri_sanitizer.rb @@ -11,6 +11,12 @@ def call(env) env['QUERY_STRING'] = env['QUERY_STRING'].gsub(/%(?![0-9a-fA-F]{2})/, '%25') end + if env['REQUEST_METHOD'] == 'POST' + rack_input = env['rack.input'].read + unless /\A(?:%[0-9a-fA-F]{2}|[^%])*\z/ =~ rack_input + env['rack.input'] = StringIO.new(rack_input.gsub(/%(?![0-9a-fA-F]{2})/, '%25')) + end + end @app.call(env) end end diff --git a/lib/rack/uri_sanitizer/version.rb b/lib/rack/uri_sanitizer/version.rb index fd7842d..cacd8c4 100644 --- a/lib/rack/uri_sanitizer/version.rb +++ b/lib/rack/uri_sanitizer/version.rb @@ -1,5 +1,5 @@ module Rack class URISanitizer - VERSION = "0.0.2" + VERSION = "0.1.0" end end