Commit 2865dad
authored
security: client-side sanitize snapshot HTML (#110)
Defense-in-depth: run snapshot HTML through DOMPurify before injecting it via innerHTML in the viewer and embed, using the same allowlist the server-side SnapshotHtmlSanitizer enforces (formatting tags only, no attributes). .pad bodies are attacker-writable, so XSS now requires both the server and client gate to fail.
- src/lib/sanitize-html.js (sanitizeSnapshotHtml via DOMPurify), applied at both innerHTML sinks; embed derives its HTML path from the sanitized result.
- jsdom-pinned unit tests (happy-dom mis-sanitizes DOMPurify).
- deps: dompurify (runtime), jsdom (dev).
vitest 123 + full Playwright 23/23 on NC 33; CI green incl. stale-js guard.
Closes #110.1 parent ea657d0 commit 2865dad
15 files changed
Lines changed: 666 additions & 10 deletions
File tree
- js
- src
- lib
- tests/js/lib
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
This file was deleted.
This file was deleted.
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
0 commit comments