0Pricing
React Academy · Lezione

Content Security Policy per le app React

Configuri un header CSP rigoroso che impedisca gli script inline e le risorse esterne non autorizzate nelle applicazioni React.

Content Security Policy per le app React è una lezione React Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento React Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso React Academy include 4 lezioni in totale.

Che cos'è la Content Security Policy

La Content Security Policy (CSP) è un header di risposta HTTP che comunica al browser quali origini dei contenuti sono attendibili. Dichiarando esattamente quali script, stili, immagini e font possono essere caricati, CSP impedisce l'esecuzione di contenuti dannosi iniettati, anche se una vulnerabilità XSS consente all'aggressore di inserire HTML nella pagina.

default-src e script-src

default-src 'self' imposta la regola di base: tutti i tipi di risorsa (script, stili, immagini, font e frame) possono essere caricati solo dalla stessa origine. script-src 'self' restringe il caricamento degli script alla stessa origine, bloccando gli script provenienti da CDN esterne a meno che non siano elencati esplicitamente. Insieme, queste due direttive costituiscono la base di una CSP restrittiva.

Perché bloccare eval è importante

eval() converte una stringa in codice eseguibile durante l'esecuzione: è esattamente ciò di cui hanno bisogno i payload XSS. Una CSP con script-src 'self' (senza 'unsafe-eval') blocca eval() e funzioni correlate come new Function() e setTimeout(string). In questo modo elimina una classe importante di esecuzione di payload XSS.

strict-dynamic per le catene di script

'strict-dynamic' in script-src concede fiducia agli script caricati da script già considerati attendibili. Questo consente i pattern di caricamento dinamico degli script utilizzati dai bundler senza dover inserire nella whitelist ogni URL CDN. Uno script attendibile può caricare altri script, che ereditano tale attendibilità.

CSP basata su hash per gli script inline

Se la sua applicazione richiede uno specifico script inline (ad esempio uno snippet di inizializzazione per l'analisi), può calcolarne l'hash SHA-256 e aggiungere 'sha256-base64hash' a script-src. Solo gli script con esattamente quell'hash possono essere eseguiti inline. Qualsiasi script iniettato dall'aggressore avrà un hash diverso e verrà bloccato.

CSP basata su nonce

Un nonce è un valore crittograficamente casuale generato dal server per ogni richiesta. Il server aggiunge il nonce sia al tag script (<script nonce="abc123">) sia all'header CSP (script-src 'nonce-abc123'). Vengono eseguiti solo gli script che riportano il nonce corretto. Gli aggressori non possono prevedere il nonce, quindi gli script iniettati non possono utilizzarlo.

Report delle violazioni CSP

CSP supporta la segnalazione delle violazioni tramite report-uri /csp-violation-endpoint o tramite la direttiva più recente report-to. Quando il browser blocca una risorsa a causa di CSP, invia un report JSON all'endpoint. Il monitoraggio di questi report aiuta a identificare sia i problemi di configurazione legittimi sia i tentativi di attacco in corso.

Implementare CSP in Next.js

In Next.js, aggiunga gli header CSP nel middleware: crei middleware.ts, generi un nonce, imposti l'header Content-Security-Policy e passi il nonce alla pagina tramite un header di risposta. Il layout della pagina legge il nonce dall'header e lo applica a tutti gli script inline e ai tag di stile.

Testare CSP senza bloccare

Content-Security-Policy-Report-Only è la modalità di test: il browser non applica alcun blocco, ma invia report delle violazioni per tutto ciò che sarebbe stato bloccato. Esegua prima il deployment in modalità Report-Only, risolva tutte le violazioni e poi passi all'header Content-Security-Policy che applica i blocchi, così da evitare di interrompere il funzionamento dell'applicazione.

Violazioni nella console di Chrome DevTools

Quando CSP blocca una risorsa, la console di Chrome DevTools mostra un messaggio di errore rosso che identifica l'URL bloccato e la direttiva violata. Questi messaggi sono preziosi durante lo sviluppo e i test. Ogni violazione deve essere risolta correggendo la policy, spostando la risorsa in un'origine consentita oppure utilizzando un nonce o un hash.

Una CSP pratica per una SPA React

Una CSP pratica per una SPA React: default-src 'self'; script-src 'self' 'strict-dynamic' 'nonce-NONCE'; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; connect-src 'self' https://api.yourdomain.com; frame-ancestors 'none'. Anche frame-ancestors 'none' impedisce il clickjacking, bloccando l'inserimento dell'applicazione in iframe.

CSP script-src self

Che cosa impedisce script-src 'self' in una Content Security Policy?

Riepilogo della lezione

CSP è un header HTTP che dichiara le origini attendibili dei contenuti. default-src 'self' e script-src 'self' bloccano gli script esterni e eval. Gli script inline possono essere autorizzati tramite hash o nonce. 'strict-dynamic' supporta il caricamento dinamico degli script. Utilizzi Content-Security-Policy-Report-Only per eseguire i test prima di applicare i blocchi. Next.js implementa CSP tramite il middleware. La console di DevTools mostra le violazioni in tempo reale.

Domande Frequenti

La lezione «Content Security Policy per le app React» è gratuita?

Sì — il testo completo di «Content Security Policy per le app React» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso React Academy, passa a CoddyKit PRO. Il corso React Academy include 4 lezioni in totale.

Cosa imparerò in «Content Security Policy per le app React»?

Configuri un header CSP rigoroso che impedisca gli script inline e le risorse esterne non autorizzate nelle applicazioni React. Eserciti React Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare React Academy?

Non è richiesta alcuna esperienza precedente. React Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Content Security Policy per le app React»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione React Academy?

Sì. Ogni lezione React Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. XSS in React: dangerouslySetInnerHTML e script di terze parti
  2. Protezione CSRF in React e nelle configurazioni API
  3. Content Security Policy per le app React
  4. Gestione dei segreti e variabili d’ambiente
← Torna a React Academy