Mitä X-Content-Type-Options tekee?

Suojausotsikot ovat HTTP-vastausotsikon alijoukko, jonka verkkopalvelin voi asettaa ja joka käyttää selaimissa suojaushallintaa. HTTP-otsikot ovat metadatan muoto, joka lähetetään verkkopyyntöjen ja vastausten kanssa. Suojausotsikko "X-Content-Type-Options" estää selaimia suorittamasta MIME-haistelua.

Huomautus: HTTP-otsikot eivät ole yksinomaan HTTP: ssä, ja niitä käytetään myös HTTPS: ssä.

Mitä MIME-hauskaus on?

Kun dataa lähetetään verkon kautta, yksi mukana olevista metatiedoista on MIME-tyyppinen. Multipurpose Internet Mail Extensions eli MIME-tyypit ovat standardi, jota käytetään määrittämään tiedoston sisältämien tietojen tyyppi, mikä osoittaa, kuinka tiedostoa tulee käsitellä. Tyypillisesti MIME-tyyppi koostuu tyypistä ja alatyypistä valinnaisella parametrilla ja arvolla. Esimerkiksi UTF-8-tekstitiedoston MIME-tyyppi on "text/plain; charset=UTF-8". Tässä esimerkissä tyyppi on "teksti", alatyyppi on "plain", parametri on "charset" ja arvo on "UTF-8".

Verkkopalvelimet suorittavat tavallisesti MIME-hauskinta tiedostojen väärin merkitsemisen ja käsittelyn estämiseksi. Tämä on prosessi, jossa nimenomaisesti ilmoitettu MIME-tyyppi jätetään huomioimatta ja sen sijaan analysoidaan tiedoston alku. Useimmat tiedostotyypit sisältävät otsikkosarjoja, jotka osoittavat, minkä tyyppinen tiedosto on kyseessä. Useimmiten MIME-tyypit ovat oikeita, eikä tiedoston haistelemisella ole merkitystä. Jos kuitenkin eroa on, verkkopalvelimet käyttävät haisteltua tiedostotyyppiä määrittääkseen, kuinka tiedostoa käsitellään, ilmoitetun MIME-tyypin sijaan.

Ongelma ilmenee, jos hyökkääjä onnistuu lataamaan tiedoston, kuten PNG-kuvan, mutta tiedosto on todella jotain muuta, kuten JavaScript-koodia. Samankaltaisille tiedostotyypeille, kuten kahdelle tekstityypille, tämä ei välttämättä aiheuta liikaa ongelmia. Siitä tulee kuitenkin vakava ongelma, jos sen sijaan voidaan suorittaa täysin harmiton tiedosto.

Mitä X-Content-Type-Options tekee?

X-Content-Type-Options-otsikossa on vain yksi mahdollinen arvo "X-Content-Type-Options: nosniff". Sen ottaminen käyttöön ilmoittaa käyttäjän selaimelle, että se ei saa suorittaa MIME-tyypin haistamista vaan luottaa sen sijaan nimenomaisesti ilmoitettuun arvoon. Ilman tätä asetusta JavaScript-tiedosto suoritettaisiin, jos haitallinen JavaScript-tiedosto naamioituisi kuvaksi, kuten PNG-tiedostoksi. Kun X-Content-Type-Options on käytössä, tiedostoa käsitellään kuvana, joka ei lataudu, koska tiedosto ei ole kelvollinen kuvamuoto.

X-Content-Type-Options ei ole erityisen välttämätön verkkosivustolla, joka käyttää täysin ensimmäisen osapuolen resursseja, koska ei ole mahdollista, että haitallista tiedostoa vahingossa toimitettaisiin. Jos verkkosivusto käyttää kolmannen osapuolen sisältöä, kuten ulkoisia tai käyttäjien lähettämiä resursseja, X-Content-Type-Options tarjoaa suojan tämäntyyppisiä hyökkäyksiä vastaan.