SRI heš generator
Generiši Subresource Integrity (SRI) sha384 heševe za JavaScript ili CSS fajl i kopiraj gotove atribute integrity i crossorigin, lokalno u pregledaču.
Nalepi sadržaj fajla ili otvori sam fajl: ovaj alat ne preuzima URL adrese. Čitanje skripte sa drugog sajta zahtevalo bi da taj server to dozvoli (CORS) ili naš sopstveni server koji bi je preuzeo umesto tebe, a ništa što ovde heširaš ne napušta tvoj pregledač. Heširaj tačan fajl koji ćeš objaviti.
Heš se računa nad tekstom kao UTF-8. Pregledači pretvaraju Windows prelome redova (CRLF) u LF u nalepljenom tekstu, a jedan promenjen bajt kvari heš: kad sumnjaš, otvori sam fajl.
URL se samo upisuje u isečak, nikada se ne poziva. Ostavi prazno da se koristi ime fajla.
Kako se generiše SRI heš
- Pod Heš izaberi Nalepljen kod ili Fajlovi.
- Nalepi tačan sadržaj skripte ili stilskog lista u Sadržaj skripte ili stilskog lista i pritisni Generiši SRI heš, ili prevuci jedan ili više
.jsi.cssfajlova na zonu za otpuštanje. Heševi se ažuriraju dok kucaš. - Ostavi označen SHA-384 (preporučeno), ili dodaj SHA-256 i SHA-512. Svaki označeni algoritam dodaje jedan token vrednosti.
- Izaberi Oznaka (automatski prema imenu fajla,
<script>,<script type="module">ili<link rel="stylesheet">), upiši URL resursa za isečak (opciono) i izaberi režimcrossorigin. - Kopiraj vrednost integrity ili celu oznaku.
- Da proveriš oznaku koju već koristiš, nalepi njenu vrednost ili celu oznaku u Proveri postojeću vrednost integrity (opciono).
Šta radi Subresource Integrity
Kada stranica učitava skriptu sa CDN-a, pregledač veruje svemu što taj server vrati. Ako je CDN kompromitovan ili je fajl izmenjen, izmenjeni kod se izvršava sa punim pristupom tvojoj stranici. Subresource Integrity (W3C SRI) zatvara taj procep: u atributu integrity objavljuješ očekivani heš fajla, pregledač izračuna heš onoga što preuzme i odbija da pokrene skriptu ili primeni stilski list ako se ta dva razlikuju.
<script src="https://cdn.example.com/lib.min.js"
integrity="sha384-H8BRh8j48O9oYatfu5AZzq6A9RINhZO5H16dQZngK7T62em8MUt1FLm52t+eX6xO"
crossorigin="anonymous"></script>
Vrednost je ime algoritma, crtica i Base64 zapis digesta bajtova fajla. Taj primer je heš za alert('Hello, world.'); iz SRI specifikacije. Kada je navedeno više heševa, pregledači gledaju samo najjači prisutni algoritam i prihvataju fajl ako se poklapa bilo koji heš tog algoritma. Tako sajt može da navede dve verzije fajla tokom postepenog uvođenja.
Zašto je crossorigin obavezan
Za fajl sa drugog porekla pregledač može da proveri integritet samo ako se odgovor preuzima u CORS režimu, pa oznaka mora da ima atribut crossorigin, a server mora da odgovori zaglavljem Access-Control-Allow-Origin. Koristi anonymous (bez kolačića) za javne CDN-ove; use-credentials je za retke privatne resurse. Bez CORS-a pregledač blokira fajl umesto da ga učita neproveren.
Zašto ovaj alat ne preuzima URL adrese
Ovaj alat računa heš samo za kod koji nalepiš ili fajlove koje otvoriš. Preuzimanje skripte sa njene adrese unutar stranice radilo bi samo kada taj server dozvoljava čitanje sa drugog porekla, a zaobilaženje toga zahtevalo bi server koji preuzima fajl umesto tebe, i koji bi video i šta heširaš. Sve ovde radi u tvom pregledaču. Najjednostavniji način je da preuzmeš tačan fajl na koji ćeš se pozvati (ista verzija i isti minifikovani build) i otvoriš ga ovde.
Č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đe podržavaju svi savremeni pregledači. MD5 i SHA-1 nisu dozvoljeni u SRI.
Moj heš je tačan, a pregledač ipak blokira fajl. Zašto?
Proveri da server šalje Access-Control-Allow-Origin i da oznaka ima crossorigin. Takođe se uveri da CDN servira iste bajtove: druga verzija, automatski minifikator ili nedostajući završni prelom reda menjaju heš.
Zašto nalepljen kod daje drugačiji heš od fajla?
Pregledači pretvaraju Windows prelome redova (CRLF) u LF u tekstualnim poljima, a uređivač može da doda ili ukloni oznaku redosleda bajtova ili završni novi red. Otvori sam fajl da se izračuna heš njegovih tačnih bajtova.
Da li mi treba SRI za fajlove na mom domenu?
Štiti od promena napravljenih posle izračunavanja heša, pa je najvažniji za spoljne hostove. Za sopstvene fajlove obično je lakše koristiti bandler koji pravi heševe pri izgradnji.
Da li SRI radi za slike ili fontove?
Atribut integrity podržan je na <script> i <link rel="stylesheet"> (i na <link rel="preload"> ili modulepreload za njih). Slike i fontovi ga ne mogu koristiti.
Srodni alati
- Generator heševa (MD5, SHA-256) Generiši MD5, SHA-1, SHA-256 i SHA-512 heševe teksta ili fajlova bilo koje veličine i proveri kontrolne sume. Sve radi u tvom pregledaču.
- Base64 kodiranje i dekodiranje Besplatan Base64 koder i dekoder sa punom podrškom za UTF-8 i opcijom base64url. Radi u tvom pregledaču, ništa se ne otprema na server.
- HAR pregledač fajlova Otvori .har fajl u pregledaču da pregledaš zahteve, zaglavlja, kolačiće, vremena i vodopad, pa ga očisti pre deljenja. Ništa se ne otprema na server.