WW-5712 Cover Jackson any-setters in REST parameter authorization - #1889
WW-5712 Cover Jackson any-setters in REST parameter authorization#1889carrerasdarren-cell wants to merge 2 commits into
Conversation
|
Thanks Darren — I reviewed this closely, with most of the attention on the one change that On the redirect of the existing checks
It holds. The rest also checks out: the boundary-character test in One thing to fix before merge
The direction is safe — the leaked scope has a null
A regression test for the null-name path would be worth having, since it is not currently covered. Smaller points
Nothing here changes the shape of the design — the sink-level consent model, the default-off constant |
Assisted-by: OpenAI Codex
|
Thanks for the detailed review. Addressed in
I added regressions for the null-name token-buffer path and for request-boundary cleanup after a failed Jackson read. Verification after the update: 41 focused authorization tests pass, all 144 REST plugin tests pass, REST plugin |
|
Thanks for this, and apologies for the wait — the review is on us, not you. The shape is what we agreed: sink-level consent on the any-setter, default off A couple of notes, none of them blocking. Depth semantics — checked, and they're right I went in suspecting the dynamic key might not consume its share of the depth budget, and that the which is as it should be: an any-setter on the root object takes its keys as root-level properties, The one gap it did show up: the suite pins the nested cases only for the method form I should also say plainly, since it's the thing most likely to be raised at you later: within a Smaller items
The One process note: because this touches parameter authorization, I'll run our security review over Credit for the report and the patch is yours in the release notes. |
Fixes WW-5712.
This adds opt-in authorization coverage for Jackson any-setters in the REST
plugin:
@StrutsParameter(allowDynamicKeys = true)for explicit dynamic-keyconsent;
struts.rest.anySetter.requireAnnotations, defaulting tofalseforcompatibility;
depth()limit to method and field any-setters;enforcement is disabled.
Verification:
verifyand Apache RAT passed; andgit diff --checkpassed.