Generatore di hash SRI
Genera hash Subresource Integrity (SRI) sha384 per un file JavaScript o CSS e copia gli attributi integrity e crossorigin pronti, tutto in locale.
Incolla il contenuto del file o apri il file stesso: questo strumento non scarica URL. Leggere uno script da un altro sito richiederebbe che quel server lo consenta (CORS) oppure un nostro server che lo scarichi per te, e niente di ciò di cui calcoli l'hash qui lascia mai il tuo browser. Calcola l'hash del file esatto che servirai.
Il testo viene trasformato in hash come UTF-8. I browser convertono i fine riga Windows (CRLF) in LF nel testo incollato, e un solo byte diverso rompe l'hash: nel dubbio, apri il file stesso.
L'URL viene solo scritto nello snippet, non viene mai richiesto. Lascialo vuoto per usare il nome del file.
Come generare un hash SRI
- In Hash, scegli Codice incollato o File.
- Incolla il contenuto esatto dello script o del foglio di stile in Contenuto dello script o del foglio di stile e premi Genera hash SRI, oppure trascina uno o più file
.jse.cssnella zona di rilascio. Gli hash si aggiornano mentre scrivi. - Lascia spuntato SHA-384 (consigliato) oppure aggiungi SHA-256 e SHA-512. Ogni algoritmo spuntato aggiunge un token al valore.
- Scegli il Tag (automatico dal nome del file,
<script>,<script type="module">o<link rel="stylesheet">), scrivi l’URL della risorsa per lo snippet (facoltativo) e scegli la modalitàcrossorigin. - Copia il valore integrity o il tag completo.
- Per controllare un tag che usi già, incolla il suo valore o l’intero tag in Controlla un valore integrity esistente (facoltativo).
A cosa serve la Subresource Integrity
Quando una pagina carica uno script da una CDN, il browser si fida di qualunque cosa restituisca quel server. Se la CDN viene compromessa o il file viene modificato, il codice alterato gira con pieno accesso alla tua pagina. La Subresource Integrity (W3C SRI) chiude questa falla: pubblichi l’hash atteso del file nell’attributo integrity, il browser calcola l’hash di ciò che scarica e si rifiuta di eseguire lo script o applicare il foglio di stile se i due valori sono diversi.
<script src="https://cdn.example.com/lib.min.js"
integrity="sha384-H8BRh8j48O9oYatfu5AZzq6A9RINhZO5H16dQZngK7T62em8MUt1FLm52t+eX6xO"
crossorigin="anonymous"></script>
Il valore è formato dal nome dell’algoritmo, un trattino e il digest in Base64 dei byte del file. Quello dell’esempio è l’hash di alert('Hello, world.'); tratto dalla specifica SRI. Quando sono elencati più hash, i browser considerano solo l’algoritmo più robusto presente e accettano il file se uno qualsiasi degli hash di quell’algoritmo corrisponde. È così che un sito può elencare due versioni di un file durante un rilascio graduale.
Perché serve crossorigin
Per un file su un’altra origine, il browser può verificarne l’integrità solo se la risposta viene scaricata in modalità CORS: il tag ha quindi bisogno dell’attributo crossorigin e il server deve rispondere con un header Access-Control-Allow-Origin. Usa anonymous (senza cookie) per le CDN pubbliche; use-credentials è per rare risorse private. Senza CORS il browser blocca il file invece di caricarlo senza controlli.
Perché questo strumento non scarica URL
Lo strumento calcola l’hash solo del codice che incolli o dei file che apri. Scaricare uno script dal suo URL all’interno della pagina funzionerebbe solo se quel server consente letture cross-origin, e aggirare il limite richiederebbe un server che scarichi il file per te, server che vedrebbe anche ciò di cui calcoli l’hash. Qui tutto avviene nel tuo browser. Il metodo più semplice è scaricare il file esatto che referenzierai (stessa versione e stessa build minificata) e aprirlo qui.
Domande frequenti
Quale algoritmo devo usare?
SHA-384 è la scelta abituale ed è quello che pubblicano la maggior parte delle CDN. Anche SHA-256 e SHA-512 sono supportati da tutti i browser moderni. MD5 e SHA-1 non sono ammessi in SRI.
Il mio hash è corretto ma il browser blocca comunque il file. Perché?
Controlla che il server invii Access-Control-Allow-Origin e che il tag abbia crossorigin. Assicurati anche che la CDN serva gli stessi byte: una versione diversa, un minificatore automatico o un a capo finale mancante cambiano tutti l’hash.
Perché il codice incollato dà un hash diverso dal file?
I browser convertono i fine riga Windows (CRLF) in LF nei campi di testo, e un editor può aggiungere o togliere un BOM o un a capo finale. Apri il file stesso per calcolare l’hash dei suoi byte esatti.
Mi serve SRI per i file sul mio dominio?
Protegge dalle modifiche fatte dopo il calcolo dell’hash, quindi conta soprattutto per gli host di terze parti. Per i tuoi file, di solito è più comodo un bundler che genera gli hash in fase di build.
SRI funziona con immagini o font?
L’attributo integrity è supportato su <script> e <link rel="stylesheet"> (e su <link rel="preload"> o modulepreload per queste risorse). Immagini e font non possono usarlo.
Strumenti correlati
- Generatore di hash Genera hash MD5, SHA-1, SHA-256 e SHA-512 di testi o file di qualsiasi dimensione e verifica i checksum. Tutto avviene nel tuo browser.
- Codifica e decodifica Base64 Codifica e decodifica Base64 gratis, con pieno supporto UTF-8 e opzione base64url sicura per URL. Funziona tutto nel browser, nulla viene caricato.
- Visualizzatore di file HAR Apri un file .har nel browser per esaminare richieste, header, cookie, tempi e waterfall, poi ripuliscilo prima di condividerlo. Nulla viene caricato.