Filter deep parameters, Rails 5-style. #256
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Rails 5 has added the ability to filter parameters out of a deeply-nested structure by specifying filters with periods in them, such that (for example)
/users\.id/
will filter{users: {id: 1}}
to{users: {id: '[FILTERED]'}}
. I've broken Bugsnag's parameter-filtering code out into a separate class and added similar functionality to make it work with Rails 5-style filters.For context, see Rails 5's ActionDispatch::Http::ParameterFilter::CompiledFilter:
https://github.com/rails/rails/blob/master/actionpack/lib/action_dispatch/http/parameter_filter.rb
Note that I haven't added such functionality to the GET parameter filtering, for two reasons: (1) it would be rather nontrivial to do in full generality, and (2) it only seems to be used in the RackRequest and Rails2Request classes, and neither Rack nor Rails 2 do deep parameter filters.