Mida X-Content-Type-Options teeb?

Turvapäised on HTTP vastuse päise alamhulk, mille saab määrata veebiserver, mis igaüks rakendab brauserites turbekontrolli. HTTP-päised on metaandmete vorm, mis saadetakse veebipäringute ja vastustega. Turvapäis X-Content-Type-Options takistab brauseritel MIME nuuskimist.

Märkus. HTTP päised ei ole ainult HTTP jaoks mõeldud ja neid kasutatakse ka HTTPS-is.

Mis on MIME nuusutamine?

Kui andmeid saadetakse üle veebi, on üks kaasatud metaandmete osadest MIME-tüüpi. Mitmeotstarbelised Interneti-meililaiendid ehk MIME-tüübid on standard, mida kasutatakse failis sisalduvate andmete tüübi määratlemiseks, mis näitab, kuidas faili tuleks käsitleda. Tavaliselt koosneb MIME-tüüp tüübist ja alamtüübist koos valikulise parameetri ja väärtusega. Näiteks UTF-8 tekstifailil oleks MIME tüüp "text/plain; charset=UTF-8”. Selles näites on tüüp "text", alamtüüp "plain", parameeter on "charset" ja väärtus on "UTF-8".

Failide vale sildistamise ja väärkäitlemise vältimiseks teostavad veebiserverid tavaliselt MIME nuuskimist. See on protsess, kus selgesõnaliselt märgitud MIME-tüüpi ignoreeritakse ja selle asemel analüüsitakse faili algust. Enamik failitüüpe sisaldavad päisejärjestusi, mis näitavad, mis tüüpi failiga on tegemist. Enamasti on MIME-tüübid õiged ja faili nuusutamisel pole vahet. Kui siiski on erinevusi, kasutavad veebiserverid faili käsitlemise määramiseks nuusitud failitüüpi, mitte deklareeritud MIME-tüüpi.

Probleem ilmneb siis, kui ründajal õnnestub üles laadida fail, näiteks PNG-pilt, kuid see fail on tõesti midagi muud, näiteks JavaScripti kood. Sarnaste failitüüpide (nt kaks tekstitüüpi) puhul ei pruugi see liiga palju probleeme tekitada. See muutub aga tõsiseks probleemiks, kui selle asemel saab käivitada täiesti kahjutu faili.

Mida X-Content-Type-Options teeb?

Päisel X-Content-Type-Options on ainult üks võimalik väärtus "X-Content-Type-Options: nosniff". Selle lubamine teavitab kasutaja brauserit, et see ei tohi teha MIME-tüüpi nuuskimist ja selle asemel tugineda selgelt deklareeritud väärtusele. Ilma selle sätteta käivitataks JavaScripti fail, kui pahatahtlik JavaScripti fail oleks maskeeritud kujutiseks, näiteks PNG-vormingus. Kui X-Content-Type-Options on lubatud, käsitletakse faili kujutisena, mida ei õnnestu laadida, kuna fail ei ole õiges pildivormingus.

X-Content-Type-Options pole eriti vajalik veebisaidil, mis kasutab täielikult esimese osapoole ressursse, kuna puudub võimalus, et pahatahtlikku faili kogemata serveeritakse. Kui veebisait kasutab kolmanda osapoole sisu, näiteks väliseid või kasutaja esitatud ressursse, pakub X-Content-Type-Options kaitset seda tüüpi rünnakute eest.