SRI hash generator
Generiraj SRI (Subresource Integrity) sha384 hasheve 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 druge stranice zahtijevalo bi da taj poslužitelj to dopusti (CORS) ili naš vlastiti poslužitelj koji bi je dohvatio umjesto tebe, a ništa što ovdje hashiraš nikada ne napušta tvoj preglednik. Hashiraj točno onu datoteku koju ćeš posluživati.
Tekst se hashira kao UTF-8. Preglednici u zalijepljenom tekstu pretvaraju Windowsove prijelome redaka (CRLF) u LF, a jedan promijenjeni bajt kvari hash: kad si u nedoumici, otvori samu datoteku.
URL se samo upisuje u isječak, nikada se ne zahtijeva. Ostavi prazno da se koristi naziv datoteke.
Kako generirati SRI hash
- Pod Hash odaberi Zalijepljeni kod ili Datoteke.
- Zalijepi točan sadržaj skripte ili stilske datoteke u Sadržaj skripte ili stilske datoteke i pritisni Generiraj SRI hash ili ispusti jednu ili više datoteka
.jsi.cssna zonu za ispuštanje. Hashevi se ažuriraju dok tipkaš. - Ostavi označeno SHA-384 (preporučeno) ili dodaj SHA-256 i SHA-512. Svaki označeni algoritam dodaje jedan token vrijednosti.
- Odaberi Oznaka (automatski prema nazivu datoteke,
<script>,<script type="module">ili<link rel="stylesheet">), upiši URL resursa za isječak (neobavezno) i odaberi načincrossorigin. - Kopiraj vrijednost integrity ili cijelu oznaku.
- Da provjeriš oznaku koju već koristiš, zalijepi njezinu vrijednost ili cijelu oznaku u Provjeri postojeću vrijednost integrity (neobavezno).
Što radi Subresource Integrity
Kad stranica učitava skriptu s CDN-a, preglednik vjeruje svemu što taj poslužitelj vrati. Ako je CDN ugrožen ili je datoteka promijenjena, izmijenjeni kod izvodi se s punim pristupom tvojoj stranici. Subresource Integrity (W3C SRI) zatvara tu rupu: u atributu integrity objaviš očekivani hash datoteke, preglednik hashira ono što preuzme i odbija izvesti skriptu ili primijeniti stilsku datoteku ako se to dvoje razlikuje.
<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 izraza alert('Hello, world.'); iz SRI specifikacije. Kad je navedeno više hasheva, preglednici gledaju samo najjači prisutni algoritam i prihvaćaju datoteku ako se podudara bilo koji hash tog algoritma. Tako stranica može navesti dvije verzije datoteke tijekom postupnog uvođenja.
Zašto je crossorigin obavezan
Za datoteku s drugog podrijetla (origin) preglednik može provjeriti integritet samo ako se odgovor dohvaća u CORS načinu, pa oznaka treba atribut crossorigin, a poslužitelj mora odgovoriti zaglavljem Access-Control-Allow-Origin. Za javne CDN-ove koristi anonymous (bez kolačića); use-credentials je za rijetke privatne resurse. Bez CORS-a preglednik blokira datoteku umjesto da je učita neprovjerenu.
Zašto ovaj alat ne dohvaća URL-ove
Alat hashira samo kod koji zalijepiš ili datoteke koje otvoriš. Preuzimanje skripte s njezina URL-a unutar stranice radilo bi samo kad taj poslužitelj dopušta čitanje s drugog podrijetla, a zaobilaženje toga zahtijevalo bi poslužitelj koji dohvaća datoteku umjesto tebe, što bi vidjelo i ono što hashiraš. Ovdje se sve izvodi u tvom pregledniku. Najjednostavnije je preuzeti točnu datoteku na koju ćeš se pozivati (ista verzija i isti minificirani build) i otvoriti je ovdje.
Česta pitanja
Koji algoritam odabrati?
SHA-384 je uobičajen izbor i ono što objavljuje većina CDN-ova. SHA-256 i SHA-512 također podržavaju svi moderni preglednici. MD5 i SHA-1 nisu dopušteni u SRI-ju.
Moj je hash točan, a preglednik ipak blokira datoteku. Zašto?
Provjeri šalje li poslužitelj Access-Control-Allow-Origin i ima li oznaka crossorigin. Pazi i da CDN poslužuje iste bajtove: druga verzija, automatski minifikator ili nedostajući završni prijelom retka mijenjaju hash.
Zašto zalijepljeni kod daje drugačiji hash od datoteke?
Preglednici u tekstualnim poljima pretvaraju Windowsove prijelome redaka (CRLF) u LF, a uređivač može dodati ili ukloniti oznaku redoslijeda bajtova (BOM) ili završni novi redak. Otvori samu datoteku da hashiraš njezine točne bajtove.
Treba li mi SRI za datoteke na vlastitoj domeni?
Štiti od promjena napravljenih nakon što si izračunao hash, pa je najvažniji za vanjske poslužitelje. Za vlastite datoteke obično je lakši alat za izgradnju (bundler) koji hasheve generira pri izgradnji.
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.
Slični alati
- Generator hasheva Generiraj MD5, SHA-1, SHA-256 i SHA-512 hasheve teksta ili datoteka bilo koje veličine i provjeri kontrolne zbrojeve. Sve radi u tvom pregledniku.
- Base64 koder i dekoder Besplatni Base64 koder i dekoder s potpunom UTF-8 podrškom i opcijom base64url. Radi u pregledniku, ništa se ne šalje na poslužitelj.
- HAR preglednik datoteka Otvori .har datoteku u pregledniku i pregledaj zahtjeve, zaglavlja, kolačiće, vremena i vodopad, a zatim je očisti prije dijeljenja. Ništa se ne šalje.