From b1d8e8350af436815a4dd34b24cdf1c9ba87f58d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matu=CC=81s=CC=8C=20Tomlein?= Date: Tue, 12 Dec 2023 14:28:13 +0100 Subject: [PATCH 1/3] Do not set the previous session ID reference in cookies if anonymous tracking is enabled (close #1268) --- .../browser-tracker-core/src/tracker/id_cookie.ts | 14 +++++++++++--- .../browser-tracker-core/src/tracker/index.ts | 2 +- .../browser-tracker-core/test/id_cookie.test.ts | 7 ++++++- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/libraries/browser-tracker-core/src/tracker/id_cookie.ts b/libraries/browser-tracker-core/src/tracker/id_cookie.ts index 831d672c1..22d121f65 100644 --- a/libraries/browser-tracker-core/src/tracker/id_cookie.ts +++ b/libraries/browser-tracker-core/src/tracker/id_cookie.ts @@ -256,9 +256,17 @@ export function incrementEventIndexInIdCookie(idCookie: ParsedIdCookie) { * @param idCookie Parsed cookie * @returns String cookie value */ -export function serializeIdCookie(idCookie: ParsedIdCookie) { - idCookie.shift(); - return idCookie.join('.'); +export function serializeIdCookie(idCookie: ParsedIdCookie, configAnonymousTracking: boolean) { + const propertiesToAnonymize = [domainUserIdIndex, previousSessionIdIndex]; + const anonymizedIdCookie = idCookie.map((value, index) => { + if (configAnonymousTracking && propertiesToAnonymize.includes(index)) { + return ''; + } else { + return value; + } + }); + anonymizedIdCookie.shift(); + return anonymizedIdCookie.join('.'); } /** diff --git a/libraries/browser-tracker-core/src/tracker/index.ts b/libraries/browser-tracker-core/src/tracker/index.ts index 2183981c0..83c6155d9 100755 --- a/libraries/browser-tracker-core/src/tracker/index.ts +++ b/libraries/browser-tracker-core/src/tracker/index.ts @@ -586,7 +586,7 @@ export function Tracker( */ function setDomainUserIdCookie(idCookie: ParsedIdCookie) { const cookieName = getSnowplowCookieName('id'); - const cookieValue = serializeIdCookie(idCookie); + const cookieValue = serializeIdCookie(idCookie, configAnonymousTracking); return persistValue(cookieName, cookieValue, configVisitorCookieTimeout); } diff --git a/libraries/browser-tracker-core/test/id_cookie.test.ts b/libraries/browser-tracker-core/test/id_cookie.test.ts index d6584e7ff..a3749d608 100644 --- a/libraries/browser-tracker-core/test/id_cookie.test.ts +++ b/libraries/browser-tracker-core/test/id_cookie.test.ts @@ -262,7 +262,12 @@ describe('incrementEventIndexInIdCookie', () => { describe('serializeIdCookie', () => { it("Doesn't change the original cookie", () => { let cookie = `def.1653632272.10.1653632282.1653632262.ses.previous.fid.1653632252.9`; - expect(serializeIdCookie(parseIdCookie(cookie, '', '', 0))).toBe(cookie); + expect(serializeIdCookie(parseIdCookie(cookie, '', '', 0), false)).toBe(cookie); + }); + + it("Doesn't include domain user ID and previous session ID in case of anonymous tracking", () => { + let idCookie = parseIdCookie('def.1653632272.10.1653632282.1653632262.ses.previous.fid.1653632252.9', '', '', 0); + expect(serializeIdCookie(idCookie, true)).toBe('.1653632272.10.1653632282.1653632262.ses..fid.1653632252.9'); }); }); From 40080b6475cb3799703a2ff923562e7e0d7a16d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matu=CC=81s=CC=8C=20Tomlein?= Date: Tue, 12 Dec 2023 14:36:13 +0100 Subject: [PATCH 2/3] Run rush change --- ...session_id_anonymous_tracking_2023-12-12-13-35.json | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 common/changes/@snowplow/browser-tracker-core/issue-1268-previous_session_id_anonymous_tracking_2023-12-12-13-35.json diff --git a/common/changes/@snowplow/browser-tracker-core/issue-1268-previous_session_id_anonymous_tracking_2023-12-12-13-35.json b/common/changes/@snowplow/browser-tracker-core/issue-1268-previous_session_id_anonymous_tracking_2023-12-12-13-35.json new file mode 100644 index 000000000..628bf6092 --- /dev/null +++ b/common/changes/@snowplow/browser-tracker-core/issue-1268-previous_session_id_anonymous_tracking_2023-12-12-13-35.json @@ -0,0 +1,10 @@ +{ + "changes": [ + { + "packageName": "@snowplow/browser-tracker-core", + "comment": "Do not set the previous session ID reference in cookies if anonymous tracking is enabled (#1268)", + "type": "none" + } + ], + "packageName": "@snowplow/browser-tracker-core" +} \ No newline at end of file From 1fc43df2e88a2d5f902fbbd2ce31c46d6d30c7cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matu=CC=81s=CC=8C=20Tomlein?= Date: Wed, 13 Dec 2023 18:13:11 +0100 Subject: [PATCH 3/3] Simplify serializeIdCookie function --- .../browser-tracker-core/src/tracker/id_cookie.ts | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/libraries/browser-tracker-core/src/tracker/id_cookie.ts b/libraries/browser-tracker-core/src/tracker/id_cookie.ts index 22d121f65..4bf7502e6 100644 --- a/libraries/browser-tracker-core/src/tracker/id_cookie.ts +++ b/libraries/browser-tracker-core/src/tracker/id_cookie.ts @@ -257,14 +257,11 @@ export function incrementEventIndexInIdCookie(idCookie: ParsedIdCookie) { * @returns String cookie value */ export function serializeIdCookie(idCookie: ParsedIdCookie, configAnonymousTracking: boolean) { - const propertiesToAnonymize = [domainUserIdIndex, previousSessionIdIndex]; - const anonymizedIdCookie = idCookie.map((value, index) => { - if (configAnonymousTracking && propertiesToAnonymize.includes(index)) { - return ''; - } else { - return value; - } - }); + const anonymizedIdCookie: (string | number | undefined)[] = [...idCookie]; + if (configAnonymousTracking) { + anonymizedIdCookie[domainUserIdIndex] = ''; + anonymizedIdCookie[previousSessionIdIndex] = ''; + } anonymizedIdCookie.shift(); return anonymizedIdCookie.join('.'); }