Ką veikia X-Content-Type-Options?

Saugos antraštės yra HTTP atsako antraštės poaibis, kurį gali nustatyti žiniatinklio serveris, kiekvienas taiko saugos valdiklį naršyklėse. HTTP antraštės yra metaduomenų forma, siunčiama su žiniatinklio užklausomis ir atsakymais. Saugos antraštė „X-Content-Type-Options“ neleidžia naršyklėms atlikti MIME uostymo.

Pastaba: HTTP antraštės nėra išskirtinės HTTP ir taip pat naudojamos HTTPS.

Kas yra MIME uostymas?

Kai kokie nors duomenys siunčiami žiniatinklyje, vienas iš įtrauktų metaduomenų dalių yra MIME tipo. Daugiafunkciniai interneto pašto plėtiniai arba MIME tipai yra standartas, naudojamas faile esančių duomenų tipui apibrėžti, nurodantis, kaip failas turi būti tvarkomas. Paprastai MIME tipas susideda iš tipo ir potipio su pasirenkamu parametru ir verte. Pavyzdžiui, UTF-8 tekstinis failas turėtų MIME tipą „text/plain; charset=UTF-8“. Šiame pavyzdyje tipas yra „tekstas“, potipis yra „plain“, parametras yra „charset“, o reikšmė yra „UTF-8“.

Siekdami išvengti netinkamo failų žymėjimo ir netinkamo tvarkymo, žiniatinklio serveriai paprastai atlieka MIME uostymą. Tai procesas, kurio metu nepaisoma aiškiai nurodyto MIME tipo, o vietoj to analizuojama failo pradžia. Daugumoje failų tipų yra antraštės sekos, nurodančios, kokio tipo failas yra. Dažniausiai MIME tipai yra teisingi, o failo uostymas neturi jokios įtakos. Jei vis dėlto yra skirtumų, žiniatinklio serveriai naudos užuostą failo tipą, kad nustatytų, kaip tvarkyti failą, o ne deklaruotą MIME tipą.

Problema kyla, jei užpuolikui pavyksta įkelti failą, pvz., PNG vaizdą, tačiau failas iš tikrųjų yra kažkas kitas, pavyzdžiui, „JavaScript“ kodas. Dėl panašių failų tipų, pvz., dviejų tipų teksto, tai gali nesukelti per daug problemų. Tačiau tai tampa rimta problema, jei vietoj to gali būti paleistas visiškai nekenksmingas failas.

Ką veikia X-Content-Type-Options?

X-Content-Type-Options antraštėje yra tik viena galima reikšmė „X-Content-Type-Options: nosniff“. Jį įjungus naudotojo naršyklė informuojama, kad ji neturi atlikti MIME tipo uostymo, o pasikliauti aiškiai nurodyta reikšme. Be šio nustatymo, jei kenkėjiškas „JavaScript“ failas būtų užmaskuotas kaip vaizdas, pvz., PNG, „JavaScript“ failas būtų vykdomas. Įjungus X-Content-Type-Options, failas bus traktuojamas kaip vaizdas, kurio nepavyks įkelti, nes failas nėra tinkamas vaizdo formatas.

X-Content-Type-Options nėra ypač reikalingos svetainėje, kurioje naudojami tik pirmosios šalies ištekliai, nes nėra tikimybės, kad netyčia bus pateiktas kenkėjiškas failas. Jei svetainė naudoja trečiųjų šalių turinį, pvz., išorinius arba vartotojo pateiktus išteklius, X-Content-Type-Options suteikia apsaugą nuo tokio tipo atakų.