SRI-hash generátor
Generálj Subresource Integrity (SRI) sha384 hasheket JavaScript- vagy CSS-fájlhoz, és másold ki a kész integrity és crossorigin attribútumokat, helyben.
Illeszd be a fájl tartalmát, vagy nyisd meg magát a fájlt: ez az eszköz nem tölt le URL-eket. Egy másik oldalról érkező szkript beolvasásához az adott szervernek engedélyeznie kellene (CORS), vagy egy saját szerverünknek kellene lekérnie helyetted, és amit itt hashelsz, az soha nem hagyja el a böngésződet. Pontosan azt a fájlt hasheld, amelyet kiszolgálsz.
A szöveget UTF-8-ként hasheli az eszköz. A böngészők a beillesztett szövegben a Windows sorvégeket (CRLF) LF-re alakítják, és egyetlen megváltozott bájt is elrontja a hasht: kétség esetén nyisd meg magát a fájlt.
Az URL csak a kódrészletbe kerül beírásra, soha nem kérjük le. Hagyd üresen, ha a fájlnevet szeretnéd használni.
Hogyan generálj SRI-hasht
- A Hash résznél válaszd a Beillesztett kód vagy a Fájlok lehetőséget.
- Illeszd be a szkript vagy a stíluslap pontos tartalmát A szkript vagy stíluslap tartalma mezőbe, és nyomd meg az SRI-hash generálása gombot, vagy húzz egy vagy több
.jsés.cssfájlt a célterületre. A hashek gépelés közben frissülnek. - Hagyd bejelölve az SHA-384 (ajánlott) algoritmust, vagy vedd hozzá az SHA-256-ot és az SHA-512-t. Minden bejelölt algoritmus egy további tokent ad az értékhez.
- Válaszd ki a Címkét (automatikus a fájlnév alapján,
<script>,<script type="module">vagy<link rel="stylesheet">), add meg Az erőforrás URL-jét a kódrészlethez (nem kötelező), és válaszd ki acrossoriginmódot. - Másold ki az integrity értéket vagy a teljes címkét.
- Egy már használt címke ellenőrzéséhez illeszd be az értékét vagy a teljes címkét a Meglévő integrity érték ellenőrzése (nem kötelező) mezőbe.
Mit csinál a Subresource Integrity
Amikor egy oldal CDN-ről tölt be szkriptet, a böngésző megbízik abban, amit a szerver visszaad. Ha a CDN sérül, vagy a fájlt módosítják, a módosított kód teljes hozzáféréssel fut az oldaladon. A Subresource Integrity (W3C SRI) ezt a rést zárja be: a fájl várt hash-ét az integrity attribútumban teszed közzé, a böngésző kiszámítja a letöltött fájl hash-ét, és megtagadja a szkript futtatását vagy a stíluslap alkalmazását, ha a kettő eltér.
<script src="https://cdn.example.com/lib.min.js"
integrity="sha384-H8BRh8j48O9oYatfu5AZzq6A9RINhZO5H16dQZngK7T62em8MUt1FLm52t+eX6xO"
crossorigin="anonymous"></script>
Az érték az algoritmus neve, egy kötőjel és a fájl bájtjainak Base64-kódolt kivonata. Ez a példa az SRI-specifikációban szereplő alert('Hello, world.'); hash-e. Ha több hash szerepel, a böngészők csak a jelenlévő legerősebb algoritmust nézik, és akkor fogadják el a fájlt, ha az algoritmus bármelyik hash-e egyezik. Így tud egy oldal két fájlverziót is felsorolni egy bevezetés alatt.
Miért kötelező a crossorigin
Másik származási helyen lévő fájl esetén a böngésző csak akkor tudja ellenőrizni az integritást, ha a választ CORS módban kéri le, ezért a címkének crossorigin attribútumra van szüksége, a szervernek pedig Access-Control-Allow-Origin fejléccel kell válaszolnia. Nyilvános CDN-ekhez használd az anonymous értéket (sütik nélkül); a use-credentials ritka, privát erőforrásokhoz való. CORS nélkül a böngésző blokkolja a fájlt, ahelyett hogy ellenőrzés nélkül betöltené.
Miért nem tölt le URL-eket az eszköz
Az eszköz csak a beillesztett kódot vagy a megnyitott fájlokat hasheli. Egy szkript URL-ből való letöltése az oldalon belül csak akkor működne, ha az adott szerver engedélyezi a származási helyek közötti olvasást, ennek megkerüléséhez pedig egy szerverre lenne szükség, amely lekéri helyetted a fájlt, és közben azt is látná, amit hashelsz. Itt minden a böngésződben fut. A legegyszerűbb módszer, ha letöltöd pontosan azt a fájlt, amelyre hivatkozni fogsz (ugyanazt a verziót és ugyanazt a minifikált buildet), és megnyitod itt.
Gyakori kérdések
Melyik algoritmust használjam?
Az SHA-384 a szokásos választás, és a legtöbb CDN ezt teszi közzé. Az SHA-256-ot és az SHA-512-t szintén támogatja minden modern böngésző. Az MD5 és az SHA-1 nem engedélyezett az SRI-ben.
A hash helyes, a böngésző mégis blokkolja a fájlt. Miért?
Ellenőrizd, hogy a szerver küld-e Access-Control-Allow-Origin fejlécet, és hogy a címkén szerepel-e a crossorigin. Győződj meg arról is, hogy a CDN ugyanazokat a bájtokat szolgálja ki: egy másik verzió, egy automatikus minifikáló vagy egy hiányzó záró sortörés mind megváltoztatja a hasht.
Miért ad a beillesztett kód más hasht, mint a fájl?
A böngészők a szövegmezőkben a Windows sorvégeket (CRLF) LF-re alakítják, a szerkesztő pedig hozzáadhat vagy eltávolíthat egy bájtsorrend-jelet vagy egy záró sortörést. Nyisd meg magát a fájlt, hogy a pontos bájtjait hashelhesd.
Kell SRI a saját domainemen lévő fájlokhoz?
A hash kiszámítása utáni módosítások ellen véd, ezért a harmadik fél szervereinél számít a legtöbbet. A saját fájlokhoz általában könnyebb egy olyan csomagoló (bundler), amely a buildkor generálja a hasheket.
Működik az SRI képeknél vagy betűtípusoknál?
Az integrity attribútumot a <script> és a <link rel="stylesheet"> támogatja (valamint ezek <link rel="preload"> vagy modulepreload változata). Képek és betűtípusok nem használhatják.
Kapcsolódó eszközök
- Hash generátor Generálj MD5, SHA-1, SHA-256 és SHA-512 hasheket szövegből vagy bármekkora fájlból, és ellenőrizd az ellenőrző összegeket. Minden a böngésződben fut.
- Base64 kódoló és dekódoló Ingyenes Base64 kódoló és dekódoló teljes UTF-8 támogatással és URL-barát base64url opcióval. A böngésződben fut, semmit nem töltünk fel.
- HAR-fájl megjelenítő Nyiss meg .har fájlt a böngésződben a kérések, fejlécek, sütik és időzítések vizsgálatához, majd tisztítsd meg megosztás előtt. Semmi nem töltődik fel.