Skip to content

Commit 3b2b18c

Browse files
authored
feat(replay): Enforce masking of credit card fields (#10472)
This bumps our rrweb-fork to 2.11.0, which mainly includes an improvement to avoid capturing credit card inputs. See: https://github.com/getsentry/rrweb/releases/tag/2.11.0 Fixes #10258 I also added a test in replay itself to verify that this works as expected!
1 parent cd3a744 commit 3b2b18c

File tree

6 files changed

+44
-25
lines changed

6 files changed

+44
-25
lines changed

dev-packages/browser-integration-tests/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
"dependencies": {
4747
"@babel/preset-typescript": "^7.16.7",
4848
"@playwright/test": "^1.40.1",
49-
"@sentry-internal/rrweb": "2.10.0",
49+
"@sentry-internal/rrweb": "2.11.0",
5050
"@sentry/browser": "7.99.0",
5151
"@sentry/tracing": "7.99.0",
5252
"axios": "1.6.0",

dev-packages/browser-integration-tests/suites/replay/privacyInput/template.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
<textarea id="textarea"></textarea>
1212
<textarea id="textarea-masked" data-sentry-mask></textarea>
1313
<textarea id="textarea-ignore" data-sentry-ignore></textarea>
14+
<input data-sentry-unmask autocomplete="cc-number" id="should-still-be-masked" />
1415

1516
<input type="submit" value="Submit form" />
1617
<input data-sentry-unmask type="submit" value="Unmasked button" />

dev-packages/browser-integration-tests/suites/replay/privacyInput/test.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,18 @@ sentryTest(
126126
// This one should not have any input mutations
127127
return inputMutationSegmentIds.length === 2 && inputMutationSegmentIds[1] < event.segment_id;
128128
});
129+
const reqPromise4 = waitForReplayRequest(page, (event, res) => {
130+
const check =
131+
inputMutationSegmentIds.length === 2 &&
132+
inputMutationSegmentIds[1] < event.segment_id &&
133+
getIncrementalRecordingSnapshots(res).some(isInputMutation);
134+
135+
if (check) {
136+
inputMutationSegmentIds.push(event.segment_id);
137+
}
138+
139+
return check;
140+
});
129141

130142
await page.route('https://dsn.ingest.sentry.io/**/*', route => {
131143
return route.fulfill({
@@ -160,5 +172,11 @@ sentryTest(
160172
await forceFlushReplay();
161173
const snapshots3 = getIncrementalRecordingSnapshots(await reqPromise3).filter(isInputMutation);
162174
expect(snapshots3.length).toBe(0);
175+
176+
await page.locator('#should-still-be-masked').fill(text);
177+
await forceFlushReplay();
178+
const snapshots4 = getIncrementalRecordingSnapshots(await reqPromise4).filter(isInputMutation);
179+
const lastSnapshot4 = snapshots4[snapshots4.length - 1];
180+
expect(lastSnapshot4.data.text).toBe('*'.repeat(text.length));
163181
},
164182
);

packages/replay-canvas/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656
"homepage": "https://docs.sentry.io/platforms/javascript/session-replay/",
5757
"devDependencies": {
5858
"@babel/core": "^7.17.5",
59-
"@sentry-internal/rrweb": "2.10.0"
59+
"@sentry-internal/rrweb": "2.11.0"
6060
},
6161
"dependencies": {
6262
"@sentry/core": "7.99.0",

packages/replay/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@
5454
"devDependencies": {
5555
"@babel/core": "^7.17.5",
5656
"@sentry-internal/replay-worker": "7.99.0",
57-
"@sentry-internal/rrweb": "2.10.0",
58-
"@sentry-internal/rrweb-snapshot": "2.10.0",
57+
"@sentry-internal/rrweb": "2.11.0",
58+
"@sentry-internal/rrweb-snapshot": "2.11.0",
5959
"fflate": "^0.8.1",
6060
"jsdom-worker": "^0.2.1"
6161
},

yarn.lock

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5427,33 +5427,33 @@
54275427
semver "7.3.2"
54285428
semver-intersect "1.4.0"
54295429

5430-
"@sentry-internal/rrdom@2.10.0":
5431-
version "2.10.0"
5432-
resolved "https://registry.yarnpkg.com/@sentry-internal/rrdom/-/rrdom-2.10.0.tgz#7f86667939a100bee2f82b6d459e275855ccc583"
5433-
integrity sha512-28G4W8BCdqI8GsO1SYkCBIwuizLwHrg8gE4u77v0zKpiaeIyZjYJ0QqhA/gMrTHLqrfI+FAwGXchnamjci45BA==
5430+
"@sentry-internal/rrdom@2.11.0":
5431+
version "2.11.0"
5432+
resolved "https://registry.yarnpkg.com/@sentry-internal/rrdom/-/rrdom-2.11.0.tgz#f7c8f54705ad84ece0e97e53f12e87c687749b32"
5433+
integrity sha512-BZnkTrbLm9Y3R70W1+8TnImys0RbKsgyB70WQoFdUervGvPw1kLcWJOJrPcDWgVe7nlbG+bEWb6iQrvLqldycw==
54345434
dependencies:
5435-
"@sentry-internal/rrweb-snapshot" "2.10.0"
5435+
"@sentry-internal/rrweb-snapshot" "2.11.0"
54365436

5437-
"@sentry-internal/rrweb-snapshot@2.10.0":
5438-
version "2.10.0"
5439-
resolved "https://registry.yarnpkg.com/@sentry-internal/rrweb-snapshot/-/rrweb-snapshot-2.10.0.tgz#fa894fad3110fa8b912e41eb328bd956581c0ac0"
5440-
integrity sha512-/bqbmCzEn8o/hki9Jrng6xIkjczYlPHTEv+C/NDT7Q8A7WJ9KqIpCkljqyoNrD2o9OtwFuPAVgKyIPRkZF9ZfA==
5437+
"@sentry-internal/rrweb-snapshot@2.11.0":
5438+
version "2.11.0"
5439+
resolved "https://registry.yarnpkg.com/@sentry-internal/rrweb-snapshot/-/rrweb-snapshot-2.11.0.tgz#1af79130604afea989d325465b209ac015b27c9a"
5440+
integrity sha512-1nP22QlplMNooSNvTh+L30NSZ+E3UcfaJyxXSMLxUjQHTGPyM1VkndxZMmxlKhyR5X+rLbxi/+RvuAcpM43VoA==
54415441

5442-
"@sentry-internal/rrweb-types@2.10.0":
5443-
version "2.10.0"
5444-
resolved "https://registry.yarnpkg.com/@sentry-internal/rrweb-types/-/rrweb-types-2.10.0.tgz#d9da0362c31c4e96b8649bbc9ab8bb380051caf3"
5445-
integrity sha512-nnwRrH0O8J+OsOEK3LeVruTv6JovZWEFywdacyfNt2LK7XTCG8182lU6bzPK3Ganb9ps2eOkJqOTRMYUZ1TrMA==
5442+
"@sentry-internal/rrweb-types@2.11.0":
5443+
version "2.11.0"
5444+
resolved "https://registry.yarnpkg.com/@sentry-internal/rrweb-types/-/rrweb-types-2.11.0.tgz#e598c133b87be1fb04d31d09773b86142b095072"
5445+
integrity sha512-foCf9DGfN5ffzwykEtIXsV1P5d+XLDVGaQUnKF5ecGn+g5JzKTe/rPC92rL8/gEy2unL5sCTvlYL3DQvUFM4dA==
54465446
dependencies:
5447-
"@sentry-internal/rrweb-snapshot" "2.10.0"
5447+
"@sentry-internal/rrweb-snapshot" "2.11.0"
54485448

5449-
"@sentry-internal/rrweb@2.10.0":
5450-
version "2.10.0"
5451-
resolved "https://registry.yarnpkg.com/@sentry-internal/rrweb/-/rrweb-2.10.0.tgz#a101f08f4b5de70145dbbdf70e7d2a0ac4d0d83e"
5452-
integrity sha512-S2xC0xxliCCgfowFImqIK6i9dfaEuTsLrzYkPxxX54OjqjrTsJw41aGxGfYPh+PP6nWMiURuOM5jRZrbvxoH4A==
5449+
"@sentry-internal/rrweb@2.11.0":
5450+
version "2.11.0"
5451+
resolved "https://registry.yarnpkg.com/@sentry-internal/rrweb/-/rrweb-2.11.0.tgz#be8e8dfff2acf64d418b625d35a20fdcd7daeb96"
5452+
integrity sha512-QuEqpKmRDb0xQe9fhJ3j/JHO6uxFMWBowADJBA4rvVU5HbExIg9gor1tZ0b3gDuChXnnx7pxFj9/QXZjQQ75zg==
54535453
dependencies:
5454-
"@sentry-internal/rrdom" "2.10.0"
5455-
"@sentry-internal/rrweb-snapshot" "2.10.0"
5456-
"@sentry-internal/rrweb-types" "2.10.0"
5454+
"@sentry-internal/rrdom" "2.11.0"
5455+
"@sentry-internal/rrweb-snapshot" "2.11.0"
5456+
"@sentry-internal/rrweb-types" "2.11.0"
54575457
"@types/css-font-loading-module" "0.0.7"
54585458
"@xstate/fsm" "^1.4.0"
54595459
base64-arraybuffer "^1.0.1"

0 commit comments

Comments
 (0)