Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Support Trusted Types (require-trusted-types-for 'script')

Aperta
#24,744 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

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
Ambito
frontend, security

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

Feature
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 with trusted-types sentry-sdk.
  • Remove the innerHTML uses 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

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di getsentry/sentry-javascript

Tutte le issue di getsentry/sentry-javascript

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.