Generátor hašu SRI
Vygeneruj haše Subresource Integrity (SRI) sha384 pre súbor JavaScriptu alebo CSS a skopíruj hotové atribúty integrity a crossorigin, lokálne v prehliadači.
Vlož obsah súboru alebo otvor samotný súbor: tento nástroj nesťahuje adresy URL. Čítanie skriptu z iného webu by vyžadovalo, aby to ten server povolil (CORS), alebo náš vlastný server, ktorý by ho stiahol za teba, a nič, čo tu hašuješ, neopustí tvoj prehliadač. Hašuj presne ten súbor, ktorý budeš sprístupňovať.
Text sa hašuje ako UTF-8. Prehliadače menia vo vloženom texte koncové znaky riadkov Windows (CRLF) na LF a jeden zmenený bajt haš pokazí: ak máš pochybnosti, otvor samotný súbor.
Adresa URL sa len zapíše do úryvku, nikdy sa nevyžiada. Ak ju necháš prázdnu, použije sa názov súboru.
Ako vygenerovať haš SRI
- V časti Haš z vyber Vloženého kódu alebo Súborov.
- Vlož presný obsah skriptu alebo štýlu do poľa Obsah skriptu alebo štýlu a stlač Generovať haš SRI, alebo presuň jeden či viac súborov
.jsa.cssdo oblasti na presun. Haše sa aktualizujú počas písania. - Nechaj zaškrtnuté SHA-384 (odporúčané) alebo pridaj SHA-256 a SHA-512. Každý zaškrtnutý algoritmus pridá do hodnoty jeden prvok.
- Vyber Značku (automaticky podľa názvu súboru,
<script>,<script type="module">alebo<link rel="stylesheet">), napíš Adresu URL zdroja pre úryvok (voliteľné) a zvoľ režimcrossorigin. - Skopíruj hodnotu integrity alebo celú značku.
- Ak chceš skontrolovať značku, ktorú už používaš, vlož jej hodnotu alebo celú značku do poľa Skontrolovať existujúcu hodnotu integrity (voliteľné).
Funguje v tvojom prehliadači. Nič, čo zadáš, sa neodosiela na server.
Čo robí Subresource Integrity
Keď stránka načíta skript z CDN, prehliadač dôveruje všetkému, čo ten server vráti. Ak je CDN napadnuté alebo sa súbor zmení, upravený kód sa spustí s úplným prístupom k tvojej stránke. Subresource Integrity (W3C SRI) túto medzeru uzatvára: očakávaný haš súboru zverejníš v atribúte integrity, prehliadač zahašuje to, čo stiahne, a ak sa oba haše líšia, skript nespustí ani štýl neuplatní.
<script src="https://cdn.example.com/lib.min.js"
integrity="sha384-H8BRh8j48O9oYatfu5AZzq6A9RINhZO5H16dQZngK7T62em8MUt1FLm52t+eX6xO"
crossorigin="anonymous"></script>
Hodnotu tvorí názov algoritmu, pomlčka a výťah bajtov súboru zakódovaný v Base64. Uvedený príklad je haš alert('Hello, world.'); zo špecifikácie SRI. Keď je uvedených viac hašov, prehliadače sa pozerajú len na najsilnejší prítomný algoritmus a súbor prijmú, ak sa zhoduje ktorýkoľvek haš tohto algoritmu. Takto môže web počas nasadzovania uviesť dve verzie súboru.
Prečo je crossorigin povinný
Pri súbore z iného pôvodu môže prehliadač skontrolovať jeho integritu, len ak sa odpoveď načíta v režime CORS, takže značka potrebuje atribút crossorigin a server musí odpovedať hlavičkou Access-Control-Allow-Origin. Pre verejné CDN používaj anonymous (bez cookies); use-credentials je pre zriedkavé súkromné zdroje. Bez CORS prehliadač súbor zablokuje namiesto toho, aby ho načítal bez kontroly.
Prečo tento nástroj nesťahuje adresy URL
Tento nástroj hašuje len kód, ktorý vložíš, alebo súbory, ktoré otvoríš. Stiahnutie skriptu z jeho adresy priamo na stránke by fungovalo, len ak by ten server povoľoval čítanie z iného pôvodu, a obísť to by vyžadovalo server, ktorý súbor stiahne za teba a videl by aj to, čo hašuješ. Všetko tu beží v tvojom prehliadači. Najjednoduchší postup je stiahnuť presný súbor, na ktorý budeš odkazovať (tú istú verziu a ten istý zmenšený build), a otvoriť ho tu.
Často kladené otázky
Ktorý algoritmus mám použiť?
SHA-384 je obvyklá voľba a zverejňuje ju väčšina CDN. SHA-256 a SHA-512 podporujú tiež všetky moderné prehliadače. MD5 a SHA-1 sa v SRI nepovoľujú.
Haš je správny, ale prehliadač súbor aj tak blokuje. Prečo?
Skontroluj, či server posiela Access-Control-Allow-Origin a či má značka crossorigin. Uisti sa aj, že CDN poskytuje tie isté bajty: iná verzia, automatický minifikátor alebo chýbajúce posledné zalomenie riadka menia haš.
Prečo vložený kód dáva iný haš než súbor?
Prehliadače v textových poliach menia koncové znaky riadkov Windows (CRLF) na LF a editor môže pridať alebo odstrániť značku poradia bajtov alebo posledný nový riadok. Otvor samotný súbor, aby sa zahašovali jeho presné bajty.
Potrebujem SRI pre súbory na vlastnej doméne?
Chráni pred zmenami vykonanými po výpočte hašu, preto má najväčší význam pri hostiteľoch tretích strán. Pri vlastných súboroch je zvyčajne jednoduchšie použiť nástroj na zostavenie, ktorý haše generuje pri builde.
Funguje SRI pre obrázky alebo písma?
Atribút integrity sa podporuje pri <script> a <link rel="stylesheet"> (a pri <link rel="preload"> či modulepreload pre ne). Obrázky a písma ho použiť nemôžu.
Súvisiace nástroje
- Generátor hashov MD5, SHA-1, SHA-256 Vygeneruj hashe MD5, SHA-1, SHA-256 a SHA-512 textu alebo súborov ľubovoľnej veľkosti a over kontrolné súčty. Všetko beží v tvojom prehliadači.
- Base64 kodér a dekodér Bezplatný kodér a dekodér Base64 s plnou podporou UTF-8 a voľbou base64url pre URL. Beží celý v prehliadači, nič sa nenahráva na server.
- Prehliadač súborov HAR Otvor súbor .har v prehliadači a skontroluj požiadavky, hlavičky, cookies, časovanie a vodopád, potom ho pred zdieľaním vyčisti. Nič sa nenahráva.