SRI hash generator
Generiši Subresource Integrity (SRI) sha384 hash za JavaScript ili CSS datoteku i kopiraj gotove atribute integrity i crossorigin, lokalno u pregledniku.
Zalijepi sadržaj datoteke ili otvori samu datoteku: ovaj alat ne preuzima URL-ove. Čitanje skripte s tuđe stranice zahtijevalo bi da taj server to dozvoli (CORS) ili da naš vlastiti server preuzme datoteku umjesto tebe, a ništa što ovdje hashiraš ne napušta tvoj preglednik. Hashiraj tačno onu datoteku koju ćeš posluživati.
Tekst se hashira kao UTF-8. Preglednici pretvaraju Windows prelome redova (CRLF) u LF u zalijepljenom tekstu, a jedan promijenjen bajt kvari hash: kad si u dvojbi, otvori samu datoteku.
URL se samo upisuje u isječak, nikada se ne poziva. Ostavi prazno da se koristi naziv datoteke.
Kako generisati SRI hash
- U polju Šta se hashira odaberi Zalijepljeni kod ili Datoteke.
- Zalijepi tačan sadržaj skripte ili stilske datoteke u Sadržaj skripte ili stilske datoteke i pritisni Generiši SRI hash, ili prevuci jednu ili više datoteka
.jsi.cssna zonu za spuštanje. Hashevi se osvježavaju dok pišeš. - Ostavi označen SHA-384 (preporučeno) ili dodaj SHA-256 i SHA-512. Svaki označeni algoritam dodaje po jedan token u vrijednost.
- Odaberi Oznaka (automatski prema nazivu datoteke,
<script>,<script type="module">ili<link rel="stylesheet">), upiši URL resursa za isječak (opcionalno) i odaberi načincrossorigin. - Kopiraj vrijednost integrity ili cijelu oznaku.
- Da provjeriš oznaku koju već koristiš, zalijepi njenu vrijednost ili cijelu oznaku u Provjeri postojeću vrijednost integrity (opcionalno).
Šta radi Subresource Integrity
Kada stranica učitava skriptu s CDN-a, preglednik vjeruje svemu što taj server vrati. Ako je CDN kompromitovan ili je datoteka izmijenjena, izmijenjeni kod se izvršava s punim pristupom tvojoj stranici. Subresource Integrity (W3C SRI) zatvara taj propust: u atributu integrity objaviš očekivani hash datoteke, preglednik hashira ono što preuzme i odbija izvršiti skriptu ili primijeniti stilsku datoteku ako se ta dva hasha razlikuju.
<script src="https://cdn.example.com/lib.min.js"
integrity="sha384-H8BRh8j48O9oYatfu5AZzq6A9RINhZO5H16dQZngK7T62em8MUt1FLm52t+eX6xO"
crossorigin="anonymous"></script>
Vrijednost je naziv algoritma, crtica i Base64 zapis sažetka bajtova datoteke. Taj primjer je hash od alert('Hello, world.'); iz SRI specifikacije. Kada je navedeno više hasheva, preglednici gledaju samo najjači prisutni algoritam i prihvataju datoteku ako se podudara bilo koji hash tog algoritma. Tako stranica može navesti dvije verzije datoteke tokom postepenog uvođenja.
Zašto je crossorigin obavezan
Za datoteku s drugog porijekla (origin) preglednik može provjeriti integritet samo ako se odgovor dohvaća u CORS načinu, pa oznaka treba atribut crossorigin, a server mora odgovoriti zaglavljem Access-Control-Allow-Origin. Koristi anonymous (bez kolačića) za javne CDN-ove; use-credentials je za rijetke privatne resurse. Bez CORS-a preglednik blokira datoteku umjesto da je učita neprovjerenu.
Zašto ovaj alat ne preuzima URL-ove
Alat hashira samo kod koji zalijepiš ili datoteke koje otvoriš. Preuzimanje skripte s njenog URL-a unutar stranice radilo bi samo kada taj server dozvoljava čitanje s drugog porijekla, a zaobilaženje toga zahtijevalo bi server koji dohvaća datoteku umjesto tebe i koji bi vidio i ono što hashiraš. Sve ovdje radi u tvom pregledniku. Najjednostavnije je preuzeti tačnu datoteku na koju ćeš se pozivati (ista verzija i isti minifikovani build) i otvoriti je ovdje.
Česta pitanja
Koji algoritam da koristim?
SHA-384 je uobičajen izbor i ono što većina CDN-ova objavljuje. SHA-256 i SHA-512 također podržavaju svi moderni preglednici. MD5 i SHA-1 nisu dozvoljeni u SRI-ju.
Moj hash je tačan, ali preglednik ipak blokira datoteku. Zašto?
Provjeri šalje li server Access-Control-Allow-Origin i ima li oznaka crossorigin. Provjeri i da CDN poslužuje iste bajtove: drugačija verzija, automatski minifikator ili nedostajući završni prelom reda mijenjaju hash.
Zašto zalijepljeni kod daje drugačiji hash od datoteke?
Preglednici pretvaraju Windows prelome redova (CRLF) u LF u tekstualnim poljima, a uređivač može dodati ili ukloniti oznaku redoslijeda bajtova (BOM) ili završni novi red. Otvori samu datoteku da hashiraš njene tačne bajtove.
Treba li mi SRI za datoteke s mog domena?
Štiti od izmjena napravljenih nakon što si izračunao hash, pa je najvažniji za tuđe servere. Za vlastite datoteke obično je lakši bundler koji generiše hasheve pri izradi.
Radi li SRI za slike ili fontove?
Atribut integrity podržan je na <script> i <link rel="stylesheet"> (te na <link rel="preload"> ili modulepreload za njih). Slike i fontovi ga ne mogu koristiti.
Srodni alati
- Generator hasheva Generiši MD5, SHA-1, SHA-256 i SHA-512 heševe teksta ili datoteka bilo koje veličine i provjeri kontrolne zbirove. Sve radi u tvom pregledniku.
- Base64 koder i dekoder Besplatan Base64 koder i dekoder s punom podrškom za UTF-8 i opcijom base64url. Radi u pregledniku, ništa se ne šalje na server.
- HAR pregledač Otvori .har datoteku u pregledniku, pregledaj zahtjeve, zaglavlja, kolačiće, vremena i vodopad, a prije dijeljenja je očisti. Ništa se ne šalje.