Support Trusted Types (require-trusted-types-for 'script')
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Da chiarire
- Stato di attività
- Attiva
- Stack tecnologico
- react, typescript
Direzione di ricerca
Start with the shared policy helper in #24738 and trace its use from showReportDialog. Then inspect the Replay compression worker, Feedback form, lazyLoadIntegration, loader script, and error-page-embed.js paths named in the report. Done means the affected sinks work under require-trusted-types-for 'script', with the policy and CSP requirements documented.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Problem Statement
Apps that enforce Trusted Types (Content-Security-Policy: require-trusted-types-for 'script') can't use several SDK features without a pass-through default policy, which disables Trusted Types for the whole page.
Repro: https://github.com/oioki/trusted-types-sentry-js-sdk. It's a minimal Vite + React app with @sentry/react 11.0.0 and no Trusted Types policies of its own, so every violation comes from the SDK.
| Sink | Where | Enforced result | Workaround |
|---|---|---|---|
new Worker(url) |
Replay compression worker | Caught; replay continues | useCompression: false (larger payloads) |
innerHTML |
Feedback form (dangerouslySetInnerHTML: logo, success icon, screenshot styles) |
Form doesn't render | showBranding: false covers the logo only |
script.src |
showReportDialog() |
Throws, no dialog | None |
innerHTML |
error-page-embed.js (served by Sentry) |
Blocked once the dialog loads | None |
script.src |
lazyLoadIntegration() |
Throws | None |
script.src |
Loader Script | Throws | None |
The workaround in #15913 (workerUrl) doesn't help: new Worker(url) requires a TrustedScriptURL for any string URL, not just blob: URLs, so a self-hosted worker still violates.
Teams with a strict CSP (enterprise, fintech, public sector, Angular and Lit users) currently have to choose between Sentry's Replay, Feedback and User Feedback dialog and enforcing Trusted Types. Teams in report-only rollout also get SDK noise in their violation reports, with no policy name they can allow.
Solution Brainstorm
- The SDK creates one named policy, e.g.
sentry-sdk, that validates rather than passes values through. It would allow only script URLs the SDK builds itself (DSN host plus the known paths, the CDN) and only static HTML. Apps allow it withtrusted-types sentry-sdk. - Remove the
innerHTMLuses in feedback by building the SVG and styles with DOM APIs. - Document the CSP needed (
trusted-types sentry-sdk, and'allow-duplicates'when more than one SDK copy is on the page).
Additional Context
#24738 is a first step: a shared sentry-sdk policy helper, used by showReportDialog.
Priority
React with 👍 to help prioritize this issue. Please use comments to provide useful context, avoiding +1 or me too, to help us triage it.
- Lingua principale
- TypeScript
- Stelle
- 8.7k
- Fork
- 1.9k
- Merge medio
- 1g 15h
- PR unite (30g)
- 523
Preparare l'ambiente
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di getsentry/sentry-javascript
-
Next.js: basePath is concatenated onto absolute router.push hrefs, corrupting navigation transaction namesForse già presa @Lms24 l’ha presa 3 giorni fa. ApertaBrowser Bug Next.js Traces
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
getsentry/sentry-javascript#24672 · 2 commenti · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
javascript
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
getsentry/sentry-javascript#24200 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
javascript Task
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
getsentry/sentry-javascript#24134 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Cloudflare Workers javascript Tests
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
getsentry/sentry-javascript#24051 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Bug Bun javascript
Difficoltà 2/5 1-3 ore Idoneità per principianti 92/100
getsentry/sentry-javascript#24045 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di getsentry/sentry-javascript
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
melgarafael/DeskcommCRM#1812 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
prisma/prisma-cli#309 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
gregwebs/pi-quota-dispatcher#26 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
openwatersio/slackwater.xyz#124 ·
I maintainer di solito rispondono entro 1 giorno
-
agent-reported area/browser area/docs documentation good first issue hacktoberfest help wanted P2
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
I maintainer di solito rispondono entro 2 giorni