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 azonban 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 szabad MIME típusú szippantást végrehajtania, hanem 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ájlokat jelenítsenek meg. Ha egy webhely harmadik féltől származó tartalmat használ, például külső vagy felhasználó által benyújtott erőforrásokat, akkor az X-Content-Type-Options védelmet nyújt az ilyen típusú támadások ellen.