Co dělá X-Content-Type-Options?

click fraud protection

Bezpečnostní hlavičky jsou podmnožinou hlaviček HTTP odpovědí, které mohou být nastaveny webovým serverem, z nichž každá aplikuje kontrolu zabezpečení v prohlížečích. HTTP hlavičky jsou formou metadat zasílaných s webovými požadavky a odpověďmi. Bezpečnostní hlavička „X-Content-Type-Options“ brání prohlížečům v provádění sniffování MIME.

Poznámka: HTTP hlavičky nejsou výhradní pro HTTP a používají se také v HTTPS.

Co je to MIME sniffing?

Při odesílání jakýchkoli dat přes web je jednou ze zahrnutých metadat typ MIME. Multipurpose Internet Mail Extensions neboli typy MIME jsou standardem používaným k definování typu dat, která soubor obsahuje, což naznačuje, jak se má se souborem nakládat. Typ MIME se obvykle skládá z typu a podtypu s volitelným parametrem a hodnotou. Například textový soubor UTF-8 bude mít typ MIME „text/plain; znaková sada=UTF-8“. V tomto příkladu je typ „text“, podtyp je „plain“, parametr je „charset“ a hodnota je „UTF-8“.

Aby se zabránilo nesprávnému označování souborů a nesprávnému zacházení se soubory, webové servery obvykle provádějí čichání MIME. Toto je proces, kde je ignorován explicitně uvedený typ MIME a místo toho je analyzován začátek souboru. Většina typů souborů obsahuje sekvence záhlaví, které označují, o jaký typ souboru se jedná. Typy MIME jsou většinou správné a při čichání souboru nezáleží na tom. Pokud však existuje rozdíl, webové servery použijí typ souboru sniffed k určení, jak se souborem zacházet, spíše než deklarovaný typ MIME.

Problém nastane, pokud se útočníkovi podaří nahrát soubor, jako je obrázek PNG, ale soubor je ve skutečnosti něco jiného, ​​​​jako kód JavaScript. U podobných typů souborů, jako jsou dva typy textu, to nemusí způsobit příliš velký problém. To se však stává vážným problémem, pokud lze místo toho spustit zcela neškodný soubor.

Co dělá X-Content-Type-Options?

Záhlaví X-Content-Type-Options má pouze jednu možnou hodnotu „X-Content-Type-Options: nosniff“. Povolení informuje prohlížeč uživatele, že nesmí provádět sniffování typu MIME a místo toho se musí spoléhat na explicitně deklarovanou hodnotu. Pokud by bez tohoto nastavení byl škodlivý soubor JavaScript maskován jako obrázek, například PNG, byl by soubor JavaScript spuštěn. Pokud jsou povoleny možnosti X-Content-Type-Options, bude se se souborem zacházet jako s obrázkem, který se nenačte, protože soubor nemá platný formát obrázku.

X-Content-Type-Options není zvláště nutné na webu, který využívá výhradně zdroje první strany, protože neexistuje žádná šance, že by byl náhodně doručen škodlivý soubor. Pokud web používá obsah třetích stran, jako jsou externí zdroje nebo zdroje zaslané uživatelem, pak X-Content-Type-Options poskytuje ochranu proti tomuto typu útoku.