fix: properly setup CSRF errors #4259
Draft
+337
−118
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.
The current implementation frequently returns errors that seem to contradict itself (reason says "no CSRF cookie sent" and detail says "CSRF cookie found but did not match). The reason is as follows: herodot errors are copied in the
WithDetail
method, and in theory all operations in that method happen on a new struct. Thedetails
field is amap[string]any
, of which only the pointer to it is copied inWithDetail
, not the actual contents. This means, that callingWithDetail
on an existing error, modifies thedetails
field on the original error as well.And in this specific case, it means that calling WithDetail on ErrInvalidCSRFTokenServer, modifies the details field for all errors that do so, leading to misleading error responses.
Related issue(s)
Checklist
introduces a new feature.
contributing code guidelines.
vulnerability. If this pull request addresses a security vulnerability, I
confirm that I got the approval (please contact
[email protected]) from the maintainers to push
the changes.
works.
Further Comments