Drošības galvenes ir HTTP atbildes galvenes apakškopa, ko var iestatīt tīmekļa serveris, kas katrā pārlūkprogrammās izmanto drošības kontroli. HTTP galvenes ir metadatu veids, kas tiek nosūtīts ar tīmekļa pieprasījumiem un atbildēm. Drošības galvene “X-Content-Type-Options” neļauj pārlūkprogrammām veikt MIME sniffing.
Piezīme: HTTP galvenes nav ekskluzīvas HTTP, un tās tiek izmantotas arī HTTPS.
Kas ir MIME šņaukšana?
Kad dati tiek nosūtīti tīmeklī, viens no iekļautajiem metadatiem ir MIME tips. Daudzfunkcionālie interneta pasta paplašinājumi jeb MIME veidi ir standarts, ko izmanto, lai definētu failā ietverto datu veidu, kas norāda, kā fails ir jāapstrādā. Parasti MIME tips sastāv no veida un apakštipa ar neobligātu parametru un vērtību. Piemēram, UTF-8 teksta failam būtu MIME tips “text/plain;charset=UTF-8”. Šajā piemērā tips ir “text”, apakštips ir “plain”, parametrs ir “charset” un vērtība ir “UTF-8”.
Lai novērstu nepareizu failu marķēšanu un nepareizu apstrādi, tīmekļa serveri parasti veic MIME sniffing. Šis ir process, kurā skaidri norādītais MIME tips tiek ignorēts, un tā vietā tiek analizēts faila sākums. Lielākajā daļā failu tipu ir ietvertas galvenes, kas norāda, kāda veida fails tas ir. Lielāko daļu laika MIME veidi ir pareizi, un faila šņaukšanai nav nekādas nozīmes. Tomēr, ja pastāv atšķirība, tīmekļa serveri izmantos sniffed faila tipu, lai noteiktu, kā rīkoties ar failu, nevis deklarēto MIME tipu.
Problēma rodas, ja uzbrucējam izdodas augšupielādēt failu, piemēram, PNG attēlu, taču fails patiešām ir kaut kas cits, piemēram, JavaScript kods. Līdzīgiem failu tipiem, piemēram, diviem teksta tipiem, tas var neizraisīt pārāk lielas problēmas. Tomēr tā kļūst par nopietnu problēmu, ja tā vietā var izpildīt pilnīgi nekaitīgu failu.
Ko dara X-Content-Type-Options?
X-Content-Type-Options galvenē ir tikai viena iespējamā vērtība “X-Content-Type-Options: nosniff”. Iespējojot to, lietotāja pārlūkprogramma tiek informēta, ka tā nedrīkst veikt MIME tipa sniffing un tā vietā paļauties uz skaidri deklarēto vērtību. Bez šī iestatījuma, ja ļaunprātīgs JavaScript fails tika slēpts kā attēls, piemēram, PNG, JavaScript fails tiks izpildīts. Ja ir iespējotas X-Content-Type-Options, fails tiks uzskatīts par attēlu, kuru neizdodas ielādēt, jo failam nav derīga attēla formāta.
X-Content-Type-Options nav īpaši nepieciešamas vietnē, kurā tiek pilnībā izmantoti pirmās puses resursi, jo nepastāv iespēja, ka nejauši tiks apkalpots ļaunprātīgs fails. Ja vietnē tiek izmantots trešās puses saturs, piemēram, ārējie vai lietotāja iesniegtie resursi, X-Content-Type-Options nodrošina aizsardzību pret šāda veida uzbrukumiem.