security: Markdown preview loads remote images, and the site has no CSP
I maintainer di solito rispondono entro 1 giorno
Una pull request collegata è già stata integrata.
- #150 di @ajithakdev — integrata
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 55/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Specificata chiaramente
- Stato di attività
- Attiva
- Stack tecnologico
- react, typescript
Direzione di ricerca
Start with src/tools/markdown/MarkdownTool.tsx and index.html, then inspect the build setup to learn how pages are generated and where the inline theme script comes from. Check how the preview and print window render sanitized Markdown, and how the API Tester makes requests. Done when remote images make no request before opt-in, the CSP appears on every generated page, and Home, a tool page, and About work without CSP console errors.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Problem
The Markdown tool renders a live preview with DOMPurify.sanitize(marked.parse(markdown)) (src/tools/markdown/MarkdownTool.tsx:14, inserted at line 98). DOMPurify blocks scripts, but it keeps <img src="https://...">. Pasting Markdown that contains a remote image, for example a tracking pixel in a copied README or email, makes the browser request that URL as soon as it renders. The print window does the same (MarkdownTool.tsx:20-40).
This conflicts with the project rule in AGENTS.md ("No network calls except the API Tester's user-initiated fetch") and the site's privacy promise. There is also no Content-Security-Policy in index.html (only the meta tags at lines 4-30) to stop this or any future leak.
Proposed fix
- In the Markdown preview, block remote images by default: use a DOMPurify hook to strip or replace
srcvalues that are notdata:orblob:, and show a "Load remote images" toggle. - Add a CSP
<meta http-equiv="Content-Security-Policy">toindex.html, for exampledefault-src 'self'; img-src 'self' data: blob:; connect-src *(API Tester needsconnect-src), and confirm the inline theme script and the build still work (hash the inline script if needed).
Acceptance criteria
- Pasting
into the Markdown tool makes no network request until the user opts in. - The CSP is present on every generated page, the site works with it, and the DevTools console shows no CSP errors on Home, a tool page, and About.
- Lingua principale
- TypeScript
- Stelle
- 2
- Fork
- 1
- Merge medio
- 1g 6h
- PR unite (30g)
- 33
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
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 ajithakdev/toolglass
-
devex
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
ajithakdev/toolglass#145 ·
I maintainer di solito rispondono entro 1 giorno
-
documentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
ajithakdev/toolglass#143 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement later platform
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
ajithakdev/toolglass#195 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement later platform ux
Difficoltà 4/5 3-5 giorni Idoneità per principianti 52/100
ajithakdev/toolglass#194 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement good first issue platform ux
Difficoltà 4/5 3-5 giorni Idoneità per principianti 55/100
ajithakdev/toolglass#193 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di ajithakdev/toolglass
Issue simili
-
Navbar avatar and name stay stale after saving profile changesForse già presa @alexechoi l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
marmelab/atomic-crm#416 ·
I maintainer di solito rispondono entro 1 giorno
-
feature-request
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
bluesky-social/social-app#12343 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
lucide-icons/lucide#5165 ·
I maintainer di solito rispondono entro 1 giorno
-
[Feature] Preferences - Keep the theme selection popover open after selection for quick previewAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 64/100
marktext/marktext#6033 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
area:desktop bug has repro platform:macos
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
anthropics/claude-code#107903 ·