Skip to content

Conversation

hf
Copy link
Collaborator

@hf hf commented Jan 31, 2025

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.

@hf hf force-pushed the hf/fix-invalid-utf8 branch 2 times, most recently from 35f4b68 to af6e190 Compare January 31, 2025 14:54
Copy link
Member

@kangmingtay kangmingtay left a 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

@hf hf merged commit 6deb687 into main Feb 27, 2025
4 checks passed
@hf hf deleted the hf/fix-invalid-utf8 branch February 27, 2025 10:13
kangmingtay pushed a commit that referenced this pull request Mar 16, 2025
🤖 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>
kangmingtay added a commit that referenced this pull request Mar 16, 2025
kangmingtay added a commit that referenced this pull request Mar 16, 2025
…h encoding (#90)" (#100)

* This reverts commit 6deb687
introduced in #90
kangmingtay pushed a commit that referenced this pull request Mar 16, 2025
🤖 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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants