Generator de hash SRI
Generează hash-uri Subresource Integrity (SRI) sha384 pentru un fișier JavaScript sau CSS și copiază atributele integrity și crossorigin gata făcute, local.
Lipește conținutul fișierului sau deschide chiar fișierul: acest instrument nu descarcă adrese URL. Citirea unui script de pe alt site ar necesita ca acel server să permită asta (CORS) sau un server al nostru care să îl aducă pentru tine, iar nimic din ce calculezi aici nu părăsește browserul tău. Calculează hash-ul exact pentru fișierul pe care îl vei servi.
Textul este tratat ca UTF-8 pentru hash. Browserele transformă sfârșiturile de rând Windows (CRLF) în LF în textul lipit, iar un singur octet schimbat strică hash-ul: când ai dubii, deschide chiar fișierul.
URL-ul este doar scris în fragment, nu este niciodată solicitat. Lasă-l gol ca să se folosească numele fișierului.
Cum generezi un hash SRI
- În Hash pentru, alege Cod lipit sau Fișiere.
- Lipește conținutul exact al scriptului sau al foii de stil în Conținutul scriptului sau al foii de stil și apasă Generează hash SRI, ori trage unul sau mai multe fișiere
.jsși.cssîn zona de tragere. Hash-urile se actualizează pe măsură ce scrii. - Lasă bifat SHA-384 (recomandat) sau adaugă SHA-256 și SHA-512. Fiecare algoritm bifat adaugă un jeton în valoare.
- Alege Etichetă (automată după numele fișierului,
<script>,<script type="module">sau<link rel="stylesheet">), scrie URL-ul resursei pentru fragment (opțional) și alege modulcrossorigin. - Copiază valoare integrity sau eticheta completă.
- Ca să verifici o etichetă pe care o folosești deja, lipește valoarea ei sau eticheta întreagă în Verifică o valoare integrity existentă (opțional).
Ce face Subresource Integrity
Când o pagină încarcă un script de la un CDN, browserul are încredere în orice returnează acel server. Dacă CDN-ul este compromis sau fișierul este modificat, codul modificat rulează cu acces deplin la pagina ta. Subresource Integrity (W3C SRI) închide această breșă: publici hash-ul așteptat al fișierului în atributul integrity, browserul calculează hash-ul a ceea ce descarcă și refuză să ruleze scriptul sau să aplice foaia de stil dacă cele două diferă.
<script src="https://cdn.example.com/lib.min.js"
integrity="sha384-H8BRh8j48O9oYatfu5AZzq6A9RINhZO5H16dQZngK7T62em8MUt1FLm52t+eX6xO"
crossorigin="anonymous"></script>
Valoarea este numele algoritmului, o liniuță și rezumatul (digest) în Base64 al octeților fișierului. Exemplul de mai sus este hash-ul lui alert('Hello, world.'); din specificația SRI. Când sunt listate mai multe hash-uri, browserele se uită doar la cel mai puternic algoritm prezent și acceptă fișierul dacă oricare hash al acelui algoritm se potrivește. Așa poate un site să listeze două versiuni ale unui fișier în timpul unei lansări treptate.
De ce este necesar crossorigin
Pentru un fișier de pe altă origine, browserul poate verifica integritatea doar dacă răspunsul este adus în mod CORS, deci eticheta are nevoie de atributul crossorigin, iar serverul trebuie să răspundă cu antetul Access-Control-Allow-Origin. Folosește anonymous (fără cookie-uri) pentru CDN-uri publice; use-credentials este pentru resurse private rare. Fără CORS, browserul blochează fișierul în loc să îl încarce nevalidat.
De ce nu descarcă acest instrument adrese URL
Instrumentul calculează hash-ul doar pentru cod pe care îl lipești sau pentru fișiere pe care le deschizi. Descărcarea unui script de la adresa lui din interiorul paginii ar funcționa doar dacă acel server permite citirea cross-origin, iar ocolirea ar cere un server care să aducă fișierul pentru tine, server care ar vedea și ce calculezi. Totul rulează aici în browserul tău. Cea mai simplă metodă este să descarci fișierul exact pe care îl vei referi (aceeași versiune și aceeași variantă minificată) și să îl deschizi aici.
Întrebări frecvente
Ce algoritm să folosesc?
SHA-384 este alegerea obișnuită și cel pe care îl publică majoritatea CDN-urilor. SHA-256 și SHA-512 sunt și ele acceptate de toate browserele moderne. MD5 și SHA-1 nu sunt permise în SRI.
Hash-ul meu este corect, dar browserul tot blochează fișierul. De ce?
Verifică dacă serverul trimite Access-Control-Allow-Origin și dacă eticheta are crossorigin. Asigură-te și că CDN-ul servește aceiași octeți: o altă versiune, un minificator automat sau lipsa ultimei rupturi de rând schimbă hash-ul.
De ce codul lipit dă un hash diferit de cel al fișierului?
Browserele convertesc sfârșiturile de rând Windows (CRLF) în LF în câmpurile de text, iar un editor poate adăuga sau elimina un marcaj de ordine a octeților (BOM) sau o ruptură de rând finală. Deschide chiar fișierul ca să obții hash-ul octeților lui exacți.
Am nevoie de SRI pentru fișierele de pe propriul domeniu?
Protejează împotriva modificărilor făcute după ce ai calculat hash-ul, deci contează cel mai mult pentru găzduirile terțe. Pentru propriile fișiere, un bundler care generează hash-urile la compilare este de obicei mai simplu.
Funcționează SRI pentru imagini sau fonturi?
Atributul integrity este acceptat pe <script> și <link rel="stylesheet"> (și pe <link rel="preload"> sau modulepreload pentru acestea). Imaginile și fonturile nu îl pot folosi.
Instrumente similare
- Generator de hash Generează hash-uri MD5, SHA-1, SHA-256 și SHA-512 pentru text sau fișiere de orice dimensiune și verifică sumele de control. Totul rulează în browser.
- Codificare și decodificare Base64 Codifică și decodifică Base64 gratuit, cu suport complet UTF-8 și opțiunea base64url pentru URL. Funcționează în browser, nimic nu este încărcat.
- Vizualizator fișiere HAR Deschide un fișier .har în browser pentru a inspecta cereri, anteturi, cookie-uri, durate și cascadă, apoi curăță-l înainte de a-l trimite. Nu se încarcă nimic.