Prevent prototype pollution in $.deparam #61
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.
See #62 for a more in-depth description of how to reproduce the prototype pollution.
Using
Object.create(null)
prevents prototype pollution because the objects it creates have no prototype/constructor, and therefore does not pollute the global prototype.You can test/confirm this for yourself by comparing the outputs of:
Object.create(null).__proto__.test = 'polluted'
(should simply fail)({}).__proto__.test = 'polluted'
jQuery/browser compatability
As a reminder, if you fork this or care about prototype pollution in jQuery BBQ, you must also be on jQuery 3.4.0+, otherwise you're still vulnerable via jQuery's
$.extend
.Please also note that
Object.create(null)
is only supported on IE9+. This fork therefore drops support for IE6-8 (which should be the case anyway if you are on jQuery 3.4.0, which does not support$.browser
).