From 112bb3be44f0b008a233d508ac9b546eba9916f1 Mon Sep 17 00:00:00 2001 From: sylenien Date: Tue, 13 Sep 2022 14:26:19 +0200 Subject: [PATCH] change(tracker): rm attr removal, add check for img --- tracker/tracker/src/main/app/observer/observer.ts | 6 ------ tracker/tracker/src/main/app/observer/top_observer.ts | 1 - tracker/tracker/src/main/app/sanitizer.ts | 5 +++++ tracker/tracker/src/main/index.ts | 5 ++--- tracker/tracker/src/main/modules/img.ts | 4 ++-- 5 files changed, 9 insertions(+), 12 deletions(-) diff --git a/tracker/tracker/src/main/app/observer/observer.ts b/tracker/tracker/src/main/app/observer/observer.ts index 65fd2756f..bca24f28f 100644 --- a/tracker/tracker/src/main/app/observer/observer.ts +++ b/tracker/tracker/src/main/app/observer/observer.ts @@ -293,12 +293,6 @@ export default abstract class Observer { const width = el.clientWidth const height = el.clientHeight el = node.cloneNode() as Element - const attrs = el.getAttributeNames() - attrs.forEach((attr) => { - if (!attr.startsWith('data-openreplay') && !BASE_ATTRS.includes(attr)) { - el.removeAttribute(attr) - } - }) ;(el as HTMLElement | SVGElement).style.width = `${width}px` ;(el as HTMLElement | SVGElement).style.height = `${height}px` } diff --git a/tracker/tracker/src/main/app/observer/top_observer.ts b/tracker/tracker/src/main/app/observer/top_observer.ts index d9f2d7f9d..526270f54 100644 --- a/tracker/tracker/src/main/app/observer/top_observer.ts +++ b/tracker/tracker/src/main/app/observer/top_observer.ts @@ -77,7 +77,6 @@ export default class TopObserver extends Observer { private iframeObservers: IFrameObserver[] = [] private handleIframe(iframe: HTMLIFrameElement): void { let doc: Document | null = null - let win: Window | null = null // setTimeout is required. Otherwise some event listeners (scroll, mousemove) applied in modules // do not work on the iframe document when it 've been loaded dynamically ((why?)) const handle = this.app.safe(() => diff --git a/tracker/tracker/src/main/app/sanitizer.ts b/tracker/tracker/src/main/app/sanitizer.ts index cc11c868e..8a93db0db 100644 --- a/tracker/tracker/src/main/app/sanitizer.ts +++ b/tracker/tracker/src/main/app/sanitizer.ts @@ -78,10 +78,15 @@ export default class Sanitizer { isObscured(id: number): boolean { return this.obscured.has(id) } + isHiddenContainer(id: number) { return this.hiddenContainers.has(id) } + isMasked(id: number): boolean { + return this.isObscured(id) || this.isHiddenContainer(id) + } + getInnerTextSecure(el: HTMLElement): string { const id = this.app.nodes.getID(el) if (!id) { diff --git a/tracker/tracker/src/main/index.ts b/tracker/tracker/src/main/index.ts index 813f9753d..0a5bc1357 100644 --- a/tracker/tracker/src/main/index.ts +++ b/tracker/tracker/src/main/index.ts @@ -1,11 +1,10 @@ import App, { DEFAULT_INGEST_POINT } from './app/index.js' export { default as App } from './app/index.js' -import { UserID, UserAnonymousID, RawCustomEvent, CustomIssue } from './app/messages.gen.js' +import { UserAnonymousID, RawCustomEvent, CustomIssue } from './app/messages.gen.js' import * as _Messages from './app/messages.gen.js' export const Messages = _Messages -import { SanitizeLevel as SanitizeEnum } from './app/sanitizer.js' -export const SanitizeLevel = SanitizeEnum +export { SanitizeLevel } from './app/sanitizer.js' import Connection from './modules/connection.js' import Console from './modules/console.js' diff --git a/tracker/tracker/src/main/modules/img.ts b/tracker/tracker/src/main/modules/img.ts index f66345fed..7d86e4233 100644 --- a/tracker/tracker/src/main/modules/img.ts +++ b/tracker/tracker/src/main/modules/img.ts @@ -54,7 +54,7 @@ export default function (app: App): void { if (id === undefined) { return } - const { src, complete, naturalWidth, naturalHeight, srcset } = this + const { src, complete, naturalWidth, naturalHeight } = this if (!complete) { return } @@ -63,7 +63,7 @@ export default function (app: App): void { if (isURL(resolvedSrc)) { app.send(ResourceTiming(timestamp(), 0, 0, 0, 0, 0, resolvedSrc, 'img')) } - } else if (resolvedSrc.length >= 1e5 || app.sanitizer.isObscured(id)) { + } else if (resolvedSrc.length >= 1e5 || app.sanitizer.isMasked(id)) { sendPlaceholder(id, this) } else { sendSrc(id, this)