Support Trusted Types (require-trusted-types-for 'script')
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 35/100
- Type d'issue
- Fonctionnalité
- Clarté
- À clarifier
- Activité
- Active
- Stack technique
- react, typescript
Piste de recherche
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.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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.
- Langage dominant
- TypeScript
- Étoiles
- 8.7k
- Forks
- 1.9k
- Merge moyen
- 1 j 15 h
- PR mergées (30 j)
- 495
Préparer son environnement
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de getsentry/sentry-javascript
-
Next.js: basePath is concatenated onto absolute router.push hrefs, corrupting navigation transaction namesPeut-être pris @Lms24 l’a pris il y a 4 jours. OuverteBrowser Bug Next.js Traces
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
getsentry/sentry-javascript#24672 · 2 commentaires · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
-
javascript
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
getsentry/sentry-javascript#24200 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
javascript Task
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
getsentry/sentry-javascript#24134 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Cloudflare Workers javascript Tests
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
getsentry/sentry-javascript#24051 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Bug Bun javascript
Difficulté 2/5 1-3 heures Accessibilité débutants 92/100
getsentry/sentry-javascript#24045 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de getsentry/sentry-javascript
Issues similaires
-
triage
Difficulté 1/5 Moins d'une heure Accessibilité débutants 90/100
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
mermaid-js/mermaid-live-editor#2053 ·
Les mainteneurs répondent en général sous 1 jour
-
factory
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
jessepollak/home#1455 ·
Les mainteneurs répondent en général sous 1 jour
-
community first-timers-only good first issue hacktoberfest help wanted low hanging fruit up-for-grabs
Difficulté 1/5 Moins d'une heure Accessibilité débutants 95/100
lingdojo/kana-dojo#31227 · 1 commentaire · 5 réactions ·
Les mainteneurs répondent en général sous 1 jour
-
mobile: device viewer shows dark status bar icons on its dark backdrop in light mode (Android)Ouverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 92/100
appandflow/stim#1838 ·
Les mainteneurs répondent en général sous 1 jour