-
-
Notifications
You must be signed in to change notification settings - Fork 13
feat: improve cookie chunk handling via base64url+length encoding #90
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
35f4b68
to
af6e190
Compare
af6e190
to
92e1bef
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Due to bad uses of this package, some cookie chunks are not being properly deleted.
Do we know what causes the chunks to not be properly deleted? From a DX perspective, it seems rather confusing to have to deal with knowing whether to set the encoding to base64url
or base64url+length
update: discussed that this won't really be an issue because we set this internally - users won't have to manually configure this. once this PR is merged, future versions of supabase/ssr will start using the new base64url+length encoding
🤖 I have created a release *beep* *boop* --- ## [0.6.0](v0.5.2...v0.6.0) (2025-02-27) ### Features * improve cookie chunk handling via base64url+length encoding ([#90](#90)) ([6deb687](6deb687)) * upgrade cookie dependency and cleanup imports ([#77](#77)) ([9524528](9524528)) ### Bug Fixes * add `create*Client` string in `x-client-info` ([#85](#85)) ([f271acc](f271acc)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
🤖 I have created a release *beep* *boop* --- ## [0.6.1](v0.6.0...v0.6.1) (2025-03-16) ### Bug Fixes * force release ([#98](#98)) ([66710e8](66710e8)) * **revert:** "feat: improve cookie chunk handling via base64url+length encoding ([#90](#90))" ([#100](#100)) ([2ea8e23](2ea8e23)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Improves cookie chunk handling by introducing a new cookie encoding scheme that includes the length of the encoded Base64 value. It will prevent reconstructing data from stale cookies.
Due to bad uses of this package, some cookie chunks are not being properly deleted. Meaning that if a session was encoded in 3 chunks now suddenly goes down to 2 chunks, the last chunk is not being deleted. When it gets reconstructed, all the 3 chunks get concatenated and parsed. In some situations this leads to an invalid UTF-8 sequence (mainly because Base64 packs 6 bits into 8).
This PR addresses this by implementing a different Base64 encoding of the chunks. Instead of just splitting up a Base64 string into chunks, the first chunk will now contain the length of the string that follows. This will prevent a leftover chunk from being parsed as valid.
The encoding is as follows:
base64l-<length of base64 encoded string as base 36>-<base64 encoding>
The library now checks for these conditions and emits warnings to let the developer know that they have a bug in their integration.