mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2026-08-29 11:59:06 +00:00
core: keep whitelisted query parameters when removing link tracking (#6965)
* core: keep whitelisted query parameters when removing link tracking In safe mode, "remove link tracking" stripped any query parameter whose name started with a known tracking prefix in qsSafeBlacklist, ignoring qsWhitelist. So "list" (e.g. YouTube playlist links) was dropped because "li" (LinkedIn) is a prefix of it, and github's "ref" was dropped too. Make the safe-mode filter consult the whitelist, like the other branches. * docs: plan for keeping whitelisted query parameters when removing link tracking Design doc for the safe-mode sanitizeUri change (PR #6965): why "?list=" was stripped from YouTube links, the root cause (safe mode ignoring qsWhitelist), the fix, what it does/doesn't change, and alternatives considered.
This commit is contained in:
@@ -416,6 +416,10 @@ testSanitizeUri = describe "sanitizeUri" $ do
|
||||
"https://example.com/page/a123?source=abc" `safeSanitized` Nothing -- source is in unsafe blacklist
|
||||
"https://example.com/page/a123?name=abc" `eagerSanitized` Just "https://example.com/page/a123"
|
||||
"https://example.com/page/a123?name=abc" `safeSanitized` Nothing -- name is not in a whitelist
|
||||
it "should keep whitelisted parameters in safe mode even if they match a blacklist prefix" $ do
|
||||
"https://example.com/playlist?list=abc" `sanitized` Nothing -- "list" is whitelisted, "li" is blacklisted
|
||||
"https://example.com/playlist?list=abc&si=def" `sanitized` Just "https://example.com/playlist?list=abc"
|
||||
"https://github.com/owner/repo?ref=main" `sanitized` Nothing -- "ref" is whitelisted for github.com
|
||||
where
|
||||
s `eagerSanitized` res = sanitized_ False s res
|
||||
s `safeSanitized` res = sanitized_ True s res
|
||||
|
||||
Reference in New Issue
Block a user