Vai al contenuto principale

Generatore di hash SRI

Calcola il valore integrity di Subresource Integrity in SHA-256, SHA-384 o SHA-512 da un contenuto incollato, un file locale o un URL di CDN, poi copia il tag <script> o <link> pronto all’uso con crossorigin="anonymous".

  • Appunti

Integra questo widget

Personalizza il risultato, controlla l’anteprima e copia il codice.

Anteprima

Tipo di codice di integrazione

Codice da copiare

Responsive e ridimensionato automaticamente da Bethemesh.

Risorsa

Scaricata dal tuo browser: il CDN deve consentire CORS (jsDelivr, cdnjs e unpkg lo fanno).

Integrità

Questo strumento ti è stato utile?

Come funziona questo strumento?

Questo generatore calcola il valore integrity di Subresource Integrity (SRI) di uno script o di un foglio di stile e produce il tag HTML corrispondente. È pensato per gli sviluppatori che caricano librerie da un CDN e vogliono che il browser blocchi qualsiasi file modificato.

Subresource Integrity (specifica W3C) permette di aggiungere a un tag <script> o <link rel="stylesheet"> un attributo integrity con l’hash atteso della risorsa. Il valore è composto dal nome dell’algoritmo, un trattino e l’hash binario codificato in Base64: un file che contiene esattamente console.log("hello"); dà sha384-ym/3cF/gAcW1/eerNQGFaOSOuU2LHI6RYvChaVur/G+PkVozZ5Zo8Uu5R2S2zm7C. Al caricamento, il browser ricalcola l’hash dei byte ricevuti e si rifiuta di eseguire lo script o applicare il foglio di stile se non coincide. Sono ammessi solo SHA-256, SHA-384 e SHA-512; SHA-384 è il valore predefinito, come negli esempi della specifica e di MDN.

Per una risorsa di un’altra origine, il browser deve poter leggere la risposta per calcolarne l’hash, e questo richiede una richiesta CORS: l’attributo crossorigin="anonymous" nella pagina e un header Access-Control-Allow-Origin inviato dal CDN. Per questo lo strumento aggiunge crossorigin="anonymous" agli attributi e al tag generato. In modalità URL, il tuo browser scarica il file direttamente, senza server intermedi; funziona con i CDN che consentono CORS, come jsDelivr, cdnjs o unpkg. Il calcolo equivalente da riga di comando è openssl dgst -sha384 -binary file.js | openssl base64 -A.

Come usare questo strumento

  1. Scegli la fonte

    Incolla il contenuto del file, seleziona un file locale o inserisci l’URL di un CDN: in quest’ultimo caso il tuo browser scarica il file direttamente.

  2. Imposta algoritmo e tipo

    Mantieni SHA-384 predefinito o scegli SHA-256 o SHA-512, poi indica se si tratta di uno script o di un foglio di stile.

  3. Copia il risultato

    Prendi solo il valore integrity, gli attributi integrity e crossorigin="anonymous" o il tag <script> o <link rel="stylesheet"> completo.

Integrità SRI

Integrità SRI

integrity = algoritmo + '-' + Base64(HASH(byte della risorsa))

Casi d’uso

Proteggere una libreria caricata da jsDelivr

Inserisci l’URL con versione, per esempio https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css, per ottenere il tag <link> con integrity. Se il CDN viene compromesso e serve un altro file, il browser lo blocca.

Aggiornare l’hash dopo un cambio di versione

Ogni nuova versione di un file ne cambia l’hash. Ricalcola l’attributo integrity appena modifichi l’URL con versione, altrimenti la risorsa verrà bloccata in produzione.

Soddisfare un requisito PCI DSS sulle pagine di pagamento

PCI DSS 4.0 (requisito 6.4.3) impone di garantire l’integrità di ogni script caricato su una pagina di pagamento. SRI è uno dei metodi più usati per gli script di terze parti con contenuto stabile: genera il valore integrity di ciascuno.

Esempi

Integrità SHA-256 del testo abc

Input

Risorsa: Contenuto incollato; Contenuto della risorsa (UTF-8): abc; Algoritmo: SHA-256

Risultato

Valore integrity: sha256-ungWv48Bz+pBQUDeXa4iI7ADYaOWF3qctBD/YfIAFa0=

Consigli e buone pratiche

  • Usa sempre un URL fissato su una versione precisa: un URL «latest» o senza versione cambia contenuto e rende non valido l’hash alla pubblicazione successiva.
  • Non usare SRI per risorse generate dinamicamente, come il foglio di stile di Google Fonts, il cui contenuto varia a seconda del browser: l’hash cambierebbe da un visitatore all’altro.
  • Calcola l’hash esattamente del file servito: una versione minificata, ricompressa o con altri fine riga non ha lo stesso hash del file sorgente.

Fonti e riferimenti

Domande frequenti

Che cos’è Subresource Integrity (SRI)?

È una funzione di sicurezza dei browser, standardizzata dal W3C, che verifica che un file caricato da terze parti non sia stato modificato. Indichi l’hash atteso nell’attributo integrity; se il file ricevuto non coincide, non viene né eseguito né applicato. Protegge da un CDN compromesso o da un file alterato lungo il percorso.

Devo scegliere SHA-256, SHA-384 o SHA-512?

Tutti e tre sono accettati e sicuri. SHA-384 è la scelta più comune e il valore predefinito dello strumento; va bene anche SHA-512 e SHA-256 resta valido. Puoi indicare più valori separati da uno spazio in integrity: il browser usa allora l’algoritmo più forte.

Perché serve crossorigin="anonymous"?

Per una risorsa di un’altra origine, il browser può leggerne il contenuto, e quindi verificarne l’hash, solo tramite una richiesta CORS. Senza l’attributo crossorigin la risposta è opaca e la risorsa viene bloccata. Il valore anonymous indica di non inviare cookie né credenziali con la richiesta.

Cosa succede se l’hash non coincide?

Il browser rifiuta la risorsa e mostra nella console un errore come «Failed to find a valid digest in the 'integrity' attribute». Lo script non viene eseguito o il foglio di stile non viene applicato, il che può rompere la pagina. Controlla che l’URL abbia una versione e rigenera l’hash dal file effettivamente servito.

Perché il caricamento da URL non funziona?

Il tuo browser scarica il file e applica le regole CORS: se il server non invia un header Access-Control-Allow-Origin, la lettura viene rifiutata. In quel caso SRI non funzionerebbe nemmeno per quel file caricato da un altro dominio. Scaricalo e usa la modalità file, oppure scegli un CDN compatibile con CORS come jsDelivr, cdnjs o unpkg.

SRI sostituisce una Content Security Policy?

No, i due si completano. SRI garantisce che un file preciso non sia cambiato, mentre una CSP limita le origini da cui possono arrivare gli script e blocca quelli iniettati. Per un sito che dipende da CDN, combina una CSP restrittiva con SRI su ogni risorsa di terze parti.

Strumenti correlati

Strumenti simili o complementari a questo.

Strumenti simili

Crea una Content Security Policy direttiva per direttiva, con header HTTP, tag meta e avvisi.

Sicurezza e privacyUsa questo strumento

Genera HSTS, nosniff, Referrer-Policy, Permissions-Policy, COOP/COEP/CORP e X-Frame-Options per Nginx o Apache.

Sicurezza e privacyUsa questo strumento

Calcola in un colpo solo gli hash MD5, SHA-1, SHA-256, SHA-384 e SHA-512 di un testo o di un file.

Sicurezza e privacyIn evidenzaUsa questo strumento