A biztonsági fejlécek a HTTP-válaszfejléc egy részhalmaza, amelyet egy webszerver állíthat be, amelyek mindegyike biztonsági ellenőrzést alkalmaz a böngészőkben. A HTTP-fejlécek a webes kérésekkel és válaszokkal együtt küldött metaadatok egy formája. Az „X-Content-Type-Options” biztonsági fejléc megakadályozza, hogy a böngészők MIME-szaglást hajtsanak végre.
Megjegyzés: A HTTP-fejlécek nem kizárólagosak a HTTP-re, hanem a HTTPS-ben is használatosak.
Mi az a MIME szippantás?
Amikor bármilyen adatot küldenek a weben, a metaadatok egyike MIME típusú. A többcélú internetes levelezőbővítmények vagy MIME-típusok olyan szabványok, amelyek a fájlban található adatok típusának meghatározására szolgálnak, és jelzik, hogyan kell kezelni a fájlt. A MIME-típus általában egy típusból és egy altípusból áll, opcionális paraméterrel és értékkel. Például egy UTF-8 szövegfájl MIME-típusa „text/plain; charset=UTF-8”. Ebben a példában a típus „szöveg”, az altípus „sima”, a paraméter „karakterkészlet”, az érték pedig „UTF-8”.
A fájlok helytelen címkézésének és helytelen kezelésének elkerülése érdekében a webszerverek általában MIME-szaglást végeznek. Ez egy olyan folyamat, ahol a kifejezetten megadott MIME-típust figyelmen kívül hagyja, és helyette a fájl elejét elemzi. A legtöbb fájltípus fejlécsorozatokat tartalmaz, amelyek jelzik, hogy milyen típusú fájlról van szó. A MIME-típusok legtöbbször helyesek, és a fájl beszippantása nem tesz különbséget. Ha mégis van különbség, a webszerverek a beszippantott fájltípust fogják használni a fájl kezelésének meghatározásához, nem pedig a deklarált MIME-típust.
A probléma akkor jelentkezik, ha a támadónak sikerül feltöltenie egy fájlt, például egy PNG-képet, de a fájl valójában valami más, például JavaScript-kód. Hasonló fájltípusok, például két szövegtípus esetén ez nem okozhat túl sok problémát. Komoly problémává válik azonban, ha egy tökéletesen ártalmatlan fájl futtatható helyette.
Mit csinál az X-Content-Type-Options?
Az X-Content-Type-Options fejlécnek csak egy lehetséges értéke van: „X-Content-Type-Options: nosniff”. Engedélyezése tájékoztatja a felhasználó böngészőjét, hogy nem végezhet MIME típusú szippantást, és ehelyett a kifejezetten deklarált értékre hagyatkozhat. E beállítás nélkül, ha egy rosszindulatú JavaScript-fájlt képnek, például PNG-nek álcáztak, a JavaScript-fájl végrehajtásra kerül. Ha az X-Content-Type-Options engedélyezve van, a fájlt a rendszer képként kezeli, amely nem töltődik be, mivel a fájl nem érvényes képformátum.
Az X-Content-Type-Options nem különösebben szükséges olyan webhelyeken, amelyek kizárólag belső forrásokat használnak, mivel nincs esély arra, hogy véletlenül rosszindulatú fájl kerüljön kiszolgálásra. Ha egy webhely harmadik féltől származó tartalmat, például külső vagy felhasználó által benyújtott erőforrásokat használ, az X-Content-Type-Options védelmet nyújt az ilyen típusú támadások ellen.