Chunked cookies should not exceed browser max #301
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.
Description
We currently allow 96 characters leeway for cookie attribute size (browser cookie max size (4096 Bytes) minus CHUNK_BYTE_SIZE)
This is not enough for scenarios where the user provides many cookie options or longer cookie domain or path options.
Since the cookie attributes are dynamic and can be quite long, we can calculate the cookie attributes length from serializing an empty cookie with the same options and measuring it.
References
fixes: #296
Testing
Set a bunch of really long claims in your session (> 2000 chars) using the afterCallback hook
Specify a bunch of cookie options that will exceed 96 chars (eg a long cookie domain/path)
Login (you'll need to login on the same domain/path) and check the
Size
of your chunkedappSession.{n}
cookies in Chrome Devtools > Application > CookieThey should not exceed 4095 (Chrome Devtools doesn't inlclude the
=
)This change adds test coverage for new/changed/fixed functionality
Checklist
main