SRI maišos generatorius
Sugeneruok Subresource Integrity (SRI) sha384 maišą JavaScript ar CSS failui ir nukopijuok paruoštus integrity bei crossorigin atributus vietoje naršyklėje.
Įklijuok failo turinį arba atidaryk patį failą: šis įrankis nesiunčia URL užklausų. Norint nuskaityti kito tinklalapio skriptą, tas serveris turėtų tai leisti (CORS) arba reikėtų mūsų serverio, kuris jį parsiųstų už tave, o nieko, ką čia maišai, nepalieka tavo naršyklės. Maišyk būtent tą failą, kurį patieksi.
Tekstas maišomas kaip UTF-8. Naršyklės įklijuotame tekste Windows eilučių pabaigas (CRLF) paverčia LF, o pakeitus vos vieną baitą maiša sugenda: jei abejoji, atidaryk patį failą.
URL tik įrašomas į fragmentą, jo niekada neprašoma. Palik tuščią, jei nori naudoti failo pavadinimą.
Kaip sugeneruoti SRI maišą
- Skiltyje Maiša pasirink Įklijuotas kodas arba Failai.
- Įklijuok tikslų skripto ar stilių lentelės turinį į Skripto ar stilių lentelės turinys ir spustelėk Generuoti SRI maišą arba nutempk vieną ar kelis
.jsir.cssfailus į nutempimo sritį. Maišos atsinaujina, kai renki. - Palik pažymėtą SHA-384 (rekomenduojama) arba pridėk SHA-256 ir SHA-512. Kiekvienas pažymėtas algoritmas prideda vieną žetoną į reikšmę.
- Pasirink Žyma (automatiškai pagal failo pavadinimą,
<script>,<script type="module">arba<link rel="stylesheet">), įrašyk Ištekliaus URL fragmentui (nebūtinas) ir pasirinkcrossoriginrežimą. - Nukopijuok integrity reikšmė arba visą žymą.
- Norint patikrinti jau naudojamą žymą, įklijuok jos reikšmę arba visą žymą į Patikrinti esamą integrity reikšmę (nebūtina).
Ką daro Subresource Integrity
Kai puslapis įkelia skriptą iš CDN, naršyklė pasitiki viskuo, ką grąžina tas serveris. Jei CDN sukompromituotas arba failas pakeistas, pakeistas kodas vykdomas su pilna prieiga prie tavo puslapio. Subresource Integrity (W3C SRI) šią spragą užpildo: tu integrity atribute paskelbi laukiamą failo maišą, naršyklė suskaičiuoja maišą to, ką parsisiuntė, ir atsisako vykdyti skriptą ar taikyti stilių lentelę, jei jos nesutampa.
<script src="https://cdn.example.com/lib.min.js"
integrity="sha384-H8BRh8j48O9oYatfu5AZzq6A9RINhZO5H16dQZngK7T62em8MUt1FLm52t+eX6xO"
crossorigin="anonymous"></script>
Reikšmė yra algoritmo pavadinimas, brūkšnelis ir failo baitų Base64 užkoduota santrauka. Šis pavyzdys yra SRI specifikacijos alert('Hello, world.'); maiša. Kai išvardyta keletas maišų, naršyklės žiūri tik į stipriausią esamą algoritmą ir priima failą, jei sutampa bet kuri to algoritmo maiša. Taip svetainė diegimo metu gali nurodyti dvi failo versijas.
Kodėl būtinas crossorigin
Kito kilmės šaltinio failui naršyklė gali patikrinti vientisumą tik tada, kai atsakymas gaunamas CORS režimu, todėl žymoje turi būti crossorigin atributas, o serveris turi atsakyti su Access-Control-Allow-Origin antraštė. Viešiems CDN naudok anonymous (be slapukų); use-credentials skirtas retiems privatiems ištekliams. Be CORS naršyklė failą blokuoja, o ne įkelia netikrintą.
Kodėl šis įrankis nesiunčia URL užklausų
Šis įrankis maišo tik įklijuotą kodą ar atidarytus failus. Skripto atsisiuntimas iš jo URL pačiame puslapyje veiktų tik tada, kai tas serveris leidžia skaityti iš kitos kilmės, o tai apeiti reikėtų serverio, kuris parsiųstų failą už tave ir taip pat matytų, ką maišai. Čia viskas vyksta tavo naršyklėje. Paprasčiausias būdas – parsisiųsti tikslų failą, į kurį nurodysi (tą pačią versiją ir tą pačią suspaustą (minified) kompiliaciją), ir atidaryti jį čia.
Dažnai užduodami klausimai
Kurį algoritmą naudoti?
SHA-384 yra įprastas pasirinkimas ir tai, ką skelbia dauguma CDN. SHA-256 ir SHA-512 taip pat palaiko visos šiuolaikinės naršyklės. MD5 ir SHA-1 SRI neleidžiami.
Mano maiša teisinga, bet naršyklė vis tiek blokuoja failą. Kodėl?
Patikrink, ar serveris siunčia Access-Control-Allow-Origin ir ar žymoje yra crossorigin. Taip pat įsitikink, kad CDN teikia tuos pačius baitus: kita versija, automatinis suspaudėjas ar trūkstamas paskutinis eilutės lūžis keičia maišą.
Kodėl iš įklijuoto kodo gaunu kitokią maišą nei iš failo?
Naršyklės teksto laukuose Windows eilučių pabaigas (CRLF) paverčia LF, o redaktorius gali pridėti ar pašalinti baitų tvarkos ženklą arba paskutinį eilutės lūžį. Atidaryk patį failą, kad būtų maišomi tikslūs jo baitai.
Ar SRI reikia failams mano paties domene?
Jis saugo nuo pakeitimų, padarytų po maišos apskaičiavimo, todėl svarbiausias trečiųjų šalių serveriams. Savo failams paprastai lengviau naudoti paketų kūrimo įrankį, kuris maišas sugeneruoja kūrimo metu.
Ar SRI veikia paveikslėliams ar šriftams?
integrity atributas palaikomas <script> ir <link rel="stylesheet"> (taip pat <link rel="preload"> ar modulepreload šiems failams). Paveikslėliai ir šriftai jo naudoti negali.
Susiję įrankiai
- Maišos generatorius (MD5, SHA-256) Sukurk teksto ar bet kokio dydžio failų MD5, SHA-1, SHA-256 ir SHA-512 maišas ir patikrink kontrolines sumas. Viskas vyksta tavo naršyklėje.
- Base64 kodavimas ir dekodavimas Nemokamas Base64 kodavimas ir dekodavimas su pilna UTF-8 parama ir base64url parinktimi. Veikia tavo naršyklėje, nieko neįkeliama.
- HAR failų peržiūra Atidaryk .har failą naršyklėje ir peržiūrėk užklausas, antraštes, slapukus, laiką bei krioklį, o prieš dalijantis išvalyk. Nieko neįkeliama.