Uh oh!
There was an error while loading. Please reload this page.
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.
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.
Security: third-party script domain doesn't match the "self-hosted" claim.
The PR description says this is a "self-hosted Umami tracker," but the script is loaded from
analytics.administration.ae— a domain unrelated tokeepsimple.ioor any KeepSimple-owned infrastructure I can find in this repo. That's a meaningful discrepancy:<Head>on every render (dev, staging, prod, preview) — unlike GA/Mixpanel, which are lazy-loaded and gated behindNEXT_PUBLIC_INDEXING(seesrc/pages/_app.tsx:48,147,236).data-domainsonly filters what Umami records; it does not stop the script from loading and executing on every deploy.script.jshere can read cookies/localStorage, exfiltrate data, or modify the DOM — full script-injection blast radius.analytics.keepsimple.io), not an unrelated third-party domain.Please confirm
analytics.administration.aeis an intentionally provisioned, trusted endpoint before merging. If it is, consider:NEXT_PUBLIC_UMAMI_*) rather than hardcoding, so staging/prod and endpoint rotation don't require code changes.integrity(SRI) if the endpoint supports versioned/immutable script hashes, since this loads on every page unauthenticated.Fix this →