Integrità SRI
integrity = algoritmo + '-' + Base64(HASH(byte della risorsa))
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".
Scaricata dal tuo browser: il CDN deve consentire CORS (jsDelivr, cdnjs e unpkg lo fanno).
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.
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.
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.
Prendi solo il valore integrity, gli attributi integrity e crossorigin="anonymous" o il tag <script> o <link rel="stylesheet"> completo.
integrity = algoritmo + '-' + Base64(HASH(byte della risorsa))
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.
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.
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.
Input
Risorsa: Contenuto incollato; Contenuto della risorsa (UTF-8): abc; Algoritmo: SHA-256Risultato
Valore integrity: sha256-ungWv48Bz+pBQUDeXa4iI7ADYaOWF3qctBD/YfIAFa0=È 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.
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.
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.
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.
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.
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.
Crea una Content Security Policy direttiva per direttiva, con header HTTP, tag meta e avvisi.
Genera HSTS, nosniff, Referrer-Policy, Permissions-Policy, COOP/COEP/CORP e X-Frame-Options per Nginx o Apache.
Calcola in un colpo solo gli hash MD5, SHA-1, SHA-256, SHA-384 e SHA-512 di un testo o di un file.
Scopri come SRI usa un'impronta crittografica per verificare che uno script o un foglio di stile esterno corrisponda al file previsto.
Comprendi i diversi livelli di sicurezza di un sito Web: HTTPS, header HTTP, CSP, SRI, autenticazione, password e integrità.
Distingui hash, cifratura e firma e usa le impronte per verificare uguaglianza o integrità senza attribuire false garanzie.
Scopri quando usare crittografia, hashing, HMAC o PBKDF2 per riservatezza, integrità, autenticazione e password.