Az alforrás integritása
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.
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
- 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 styleparancsfá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.