fix(frontend): strip fragments from analytics URLs#13375
Draft
cursor[bot] wants to merge 2 commits into
Draft
Conversation
Co-authored-by: Antonio Ventilii <AntonioVentilii@users.noreply.github.com>
Co-authored-by: Antonio Ventilii <AntonioVentilii@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Motivation
Personal-note share links keep the decryption key in the URL fragment (
#k=...) so the key is never sent to the canister or leaked through referrers. Plausible's tracker useslocation.hreffor event URLs by default, so opening/notes/share/<token>#k=<key>could attach the share key to pageview and recipient analytics payloads.Existing work checked: recently merged note-share PRs #13299, #13300, #13303, #13321, #13353, the open security-model docs PR #13366, open/recent analytics PRs, and related issues. The docs and PR descriptions confirm the key/token must not be exposed in analytics, but none of the active work sanitizes Plausible's auto-attached URL.
Changes
transformRequestthat strips URL fragments from every analytics payload URL before it is sent.Tests
npm run test -- --run src/frontend/src/tests/lib/services/analytics.service.spec.tsnpm run formatnpm run lint -- --max-warnings 0npm run checknpm run testnpm run check:testsnpm run lint:lockfile