Hlavičky zabezpečenia sú podmnožinou hlavičiek odpovede HTTP, ktoré môže nastaviť webový server, pričom každá z nich aplikuje kontrolu zabezpečenia v prehliadačoch. Hlavičky HTTP sú formou metadát odosielaných s webovými požiadavkami a odpoveďami. Bezpečnostná hlavička „X-Content-Type-Options“ bráni prehliadačom vykonávať MIME sniffing.
Poznámka: Hlavičky HTTP nie sú exkluzívne pre HTTP a používajú sa aj v HTTPS.
Čo je to MIME sniffing?
Keď sa akékoľvek údaje odosielajú cez web, jednou zo zahrnutých častí metadát je typ MIME. Multipurpose Internet Mail Extensions alebo typy MIME sú štandardom používaným na definovanie typu údajov, ktoré súbor obsahuje, čo naznačuje, ako sa má so súborom zaobchádzať. Typ MIME sa zvyčajne skladá z typu a podtypu s voliteľným parametrom a hodnotou. Napríklad textový súbor UTF-8 bude mať typ MIME „text/plain;charset=UTF-8“. V tomto príklade je typ „text“, podtyp je „plain“, parameter je „charset“ a hodnota je „UTF-8“.
Aby sa predišlo nesprávnemu označovaniu a nesprávnemu zaobchádzaniu so súbormi, webové servery zvyčajne vykonávajú sniffovanie MIME. Toto je proces, pri ktorom sa ignoruje explicitne uvedený typ MIME a namiesto toho sa analyzuje začiatok súboru. Väčšina typov súborov obsahuje sekvencie hlavičiek, ktoré označujú, o aký typ súboru ide. Typy MIME sú väčšinou správne a snimanie súboru na tom nezáleží. Ak však existuje rozdiel, webové servery použijú typ súboru sniffed na určenie spôsobu spracovania súboru, a nie deklarovaný typ MIME.
Problém nastane, ak sa útočníkovi podarí nahrať súbor, napríklad obrázok PNG, ale súbor je v skutočnosti niečo iné, ako kód JavaScript. Pri podobných typoch súborov, ako sú dva typy textu, to nemusí spôsobovať príliš veľké problémy. To sa však stáva vážnym problémom, ak je možné namiesto toho spustiť úplne neškodný súbor.
Čo robí X-Content-Type-Options?
Hlavička X-Content-Type-Options má iba jednu možnú hodnotu „X-Content-Type-Options: nosniff“. Povolenie informuje prehliadač používateľa, že nesmie vykonávať sniffovanie typu MIME a namiesto toho sa spoliehať na explicitne deklarovanú hodnotu. Ak by bez tohto nastavenia bol škodlivý súbor JavaScript zamaskovaný ako obrázok, napríklad PNG, súbor JavaScript by sa spustil. Ak sú povolené možnosti X-Content-Type-Options, so súborom sa bude zaobchádzať ako s obrázkom, ktorý sa nenačíta, pretože súbor nie je platným formátom obrázka.
X-Content-Type-Options nie je obzvlášť potrebné na webovej lokalite, ktorá využíva výlučne zdroje prvej strany, pretože neexistuje žiadna šanca, že by bol náhodne doručený škodlivý súbor. Ak webová lokalita používa obsah tretích strán, ako sú externé zdroje alebo zdroje zaslané používateľom, potom X-Content-Type-Options poskytuje ochranu pred týmto typom útoku.