<script src= "cdn/lib.js" integrity= "sha384-oqV..."SHA-384mismatch → refuse to load

Az alforrás integritása

10 min olvasniWeb technológia

Minden CDN-re mutató szkriptcímke bizalmi kapcsolat az adott CDN-nel. Ha a CDN-t feltörik vagy kényszerítik, a látogatókhoz eljuttatott szkript megváltozik – és bármit is kapnak, amit a CDN most kiszolgál. Az alforrás integritása az a böngészőfunkció, amely minden szkriptet kriptográfiai kivonathoz rögzít, így a rendszer minden manipulációt észlel, és a szkriptet elutasítja.

A cikk teljes szövege alább olvasható angol nyelven.

Az

Subresource Integrity (SRI) egy biztonsági szolgáltatás, amely lehetővé teszi, hogy a weboldal kriptográfiai kivonatot adjon meg minden egyes betöltött külső erőforráshoz. A böngésző lekéri az erőforrást, kivonatolja, és összehasonlítja a várt értékkel. Ha a hash nem egyezik, az erőforrás elutasításra kerül.

A W3C szabványosította az SRI-t 2016-ban. Az átvétel évekig tartott, és mára széles körben zajlik – a nagyobb webhelyek és CDN-ek széles körben támogatják.

A fenyegetés SRI címei

XPLZ9 oldalbetöltő szkript nélkül bízik a CDN-ben, hogy pontosan azt nyújtsa, amit terveztek. Problémák:

  • CDN kompromittálás. Ha egy támadó átveszi a CDN-t, akkor minden, onnan szkripteket betöltő webhely támadókódot kap.
  • Kényszerített CDN. Egy adott CDN-felhasználónak egy kormányzati parancsot vagy parancsfájlt kézbesíthet régiók.
  • Ibelső támadás. A CDN, a könyvtári tárhelyszolgáltatás vagy az upstream csomagforrás egyik alkalmazottja módosít egy fájlt. SRI nélkül minden fogyasztó letölti a módosított verziót.
  • Számlavétel. A könyvtár szerzőjének fiókja feltört; az új verziók rosszindulatú kódokat küldenek, amelyeket a webhelyek automatikusan felszednek.

SRI nem akadályozza meg ezeket a kompromisszumokat, de megakadályozza, hogy elérjék a látogatókat.

Az SRI szintaktikai működése

XPLZrc35X

Az integritás attribútum tartalmazza az algoritmust (itt az sha384; sha256 és sha512 is támogatott) és a base64 kódolású hash-t. A crossorigin attribútum szükséges ahhoz, hogy a böngésző a CORS segítségével lekérhesse és ellenőrizhesse az erőforrást.

IHa a lekért szkript hash-je egyezik, akkor lefut. Ha nem, a böngésző konzolhibát naplóz, és nem hajtja végre a parancsfájlt. Az oldal elromolhat, de nem futtat nem megbízható kódot.

Mit véd az SRI, és mit nem?

SRI véd az adott erőforrás váratlan módosításai ellen. Nem:

  • Megakadályozza, hogy a törvényes kiadó módosítsa az erőforrást (a megfelelő hash-frissítéssel).
  • Az integritásattribútumok nélküli erőforrások védelme – a legtöbb oldal több száz erőforrással rendelkezik; A főkönyvtárban található SRI nem segít, ha más ellenőrizetlen szkriptek is betöltődnek.
  • Védekezzen magának az erőforrásnak a sebezhetőségei ellen.
  • Alkalmazza a dinamikusan betöltött szkriptekre (ellenőrizheti manuálisan a kivonatokat, de ehhez egyéni kód szükséges).

    5PLZ54XX-PLZ5X A trade-off

    SRI az erőforrást egy adott verzióhoz kapcsolja. Ha a „legújabb kisebb verziót” szeretné automatikusan frissíteni a hibajavításokhoz, az SRI nem fér bele – az erőforrás minden módosításához szükség van a hash frissítésére. A választás a következő:

    • Rögzítés egy adott verzióhoz SRI-vel a szabotázsészlelés érdekében
    • Használjon automatikusan frissítő forrásokat SRI nélkül, és bízzon a szállítóban.

    A nagy értékű webhelyek esetében az SRI-vel való verziórögzítés a biztonságosabb alapértelmezett. Azokon a webhelyeken, ahol a könyvtár automatikus biztonsági javítása fontosabb, mint a szabotázsészlelés (ritka), a kompromisszum a másik irányba megy. Az

    SRI és a CSP együtt

    SRI természetesen párosul a tartalombiztonsági házirenddel. A CSP megadhatja az require-sri-for script style parancsfájlt, ami miatt a böngésző megtagadja az integritás attribútum nélküli szkriptek vagy stíluslapok betöltését. Ez kényszeríti az SRI-használatot a szabályzat szintjén, megakadályozva a véletlen kihagyást.

    A kombináció – CSP + SRI + megfelelő eredetkorlátozások – a megkeményített weboldalak modern receptje.

    Működési valóság

    SRI-t jól támogatnak a főbb böngészők (Chrome, CDjs, Firefox, Safari, Firefox) cdnjs, unpkg mind SRI-kivonatokat biztosít a hosztolt könyvtárak számára). Az átvétel fő akadálya a működési összetettség:

    • Minden könyvtárverziónak megvan a maga hash
    • A könyvtár frissítése azt jelenti, hogy új hash-t kell létrehozni, és frissíteni kell minden olyan oldalt, amely erre hivatkozik.
    • A Build folyamatoknak tartalmazniuk kell a hash-generálást. sources
    • Dinamikus buildek, ahol a JS-csomag telepítésenkénti változásai automatikus SRI-kivonatolást igényelnek a felépítési lépésben

    A főbb keretrendszerek (webpack, Vite, parcel, esbuild) tartalmaznak SRI-bővítményeket az összeállítási idő kivonatkezeléséhez. A tipikus alkalmazások esetében ez egy egyszeri beállítási feladat.

    SRI in 2026

    A funkció immár a biztonságtudatos webhelyek alapértéke. A fennmaradó hiányosság az, hogy néhány népszerű könyvtár számos CDN-ről van betöltve verzióváltozatokkal; a hash-frissítések nyomon követésére és terjesztésére szolgáló eszközök javultak, de továbbra is figyelmet igényelnek.

    A felhasználók számára az SRI hangtalanul érvényben van számos, naponta felkeresett webhelyen. A böngésző automatikusan kezeli az ellenőrzést. Csak akkor veszi észre, ha valami elromlik – általában azért, mert a kivonat nem szinkronizált a könyvtár frissítése után.

Gyakran ismételt kérdések

Miért van szükség SRI-re, ha már HTTPS-t használok?
A HTTPS védi a szkriptet a CDN és a böngésző közötti átvitel során. Nem véd magának a CDN-nek a veszélyeztetése ellen. Az SRI pontosan a rosszindulatú szkriptet tökéletesen érvényes TLS-kapcsolaton keresztül kiszolgáló CDN ellen védekezik.
Minden szkriptnél meg kell adnom az SRI-t?
Külső szkripteknél igen – ez az érték. A saját forrásból származó, önállóan tárolt szkriptek nem profitálnak annyit az SRI-ből (ha az eredet sérült, maga az oldal is). A legtöbb modern beállítás SRI-t alkalmaz a CDN által hosztolt erőforrásokra.
Mi van, ha a könyvtáram gyakran frissül?
Zárolj egy adott verziót, és frissítsd együtt a verziót + a hash-t. Az automatikus frissítés a "legújabbra" ellentétes az SRI-vel. A legtöbb gyártóhelyen egyébként is a rögzített verziók a megfelelő választás – a függőségek automatikus frissítése valós termelési incidenseket okozott.
Megkerülhetik a támadók az SRI-t?
Nem protokoll szinten – a matematika szilárd. A gyakorlati megkerülések helytelen konfigurációból származnak: hiányzik a crossorigin attribútum (bizonyos forgatókönyvekben hibamegnyitást okoz), vagy magát a lapot irányító támadó (ebben az esetben nem kell megkerülniük az SRI-t; eltávolítják azt).
Használjam az SHA-256-ot, az SHA-384-et vagy az SHA-512-t?
A böngészők mindhármat támogatják. Az SHA-384 a gyakori választás – valamivel erősebb ütközésállóság, mint az SHA-256, míg rövidebb, mint az SHA-512. A gyakorlati biztonság összehasonlítható; válasszon egyet, és használja következetesen.
Az alforrás integritásának magyarázata: Hogyan ellenőrzik az oldalak a betöltött szkripteket