Co robią opcje X-Content-Type?

Nagłówki bezpieczeństwa to podzbiór nagłówków odpowiedzi HTTP, które mogą być ustawiane przez serwer sieciowy, z którego każdy stosuje kontrolę bezpieczeństwa w przeglądarkach. Nagłówki HTTP to forma metadanych wysyłanych wraz z żądaniami i odpowiedziami internetowymi. Nagłówek zabezpieczeń „X-Content-Type-Options” uniemożliwia przeglądarkom wykonywanie sniffingu MIME.

Uwaga: nagłówki HTTP nie dotyczą wyłącznie HTTP i są również używane w HTTPS.

Co to jest wąchanie MIME?

Gdy jakiekolwiek dane są przesyłane przez Internet, jednym z dołączonych fragmentów metadanych jest typ MIME. Wielozadaniowe rozszerzenia poczty internetowej lub typy MIME są standardem używanym do definiowania typu danych zawartych w pliku, który wskazuje, jak plik powinien być traktowany. Zazwyczaj typ MIME składa się z typu i podtypu z opcjonalnym parametrem i wartością. Na przykład plik tekstowy UTF-8 miałby typ MIME „text/plain; charset=UTF-8”. W tym przykładzie typ to „text”, podtyp to „plain”, parametr to „charset”, a wartość to „UTF-8”.

Aby zapobiec błędnym oznaczaniu i niewłaściwej obsłudze plików, serwery internetowe zazwyczaj wykonują sniffowanie MIME. Jest to proces, w którym wyraźnie określony typ MIME jest ignorowany, a zamiast tego analizowany jest początek pliku. Większość typów plików zawiera sekwencje nagłówków, które wskazują, jaki to typ pliku. W większości przypadków typy MIME są poprawne, a sniffowanie pliku nie ma znaczenia. Jeśli jednak istnieje różnica, serwery internetowe użyją sniffowanego typu pliku do określenia, jak obsłużyć plik, a nie zadeklarowanego typu MIME.

Problem pojawia się, gdy atakującemu uda się przesłać plik, taki jak obraz PNG, ale plik jest w rzeczywistości czymś innym, jak kod JavaScript. W przypadku podobnych typów plików, takich jak dwa typy tekstu, może to nie powodować większego problemu. Staje się jednak poważnym problemem, jeśli zamiast tego można wykonać całkowicie nieszkodliwy plik.

Co robią X-Content-Type-Options?

Nagłówek X-Content-Type-Options ma tylko jedną możliwą wartość „X-Content-Type-Options: nosniff”. Włączenie tego informuje przeglądarkę użytkownika, że ​​nie może ona wykonywać sniffingu typu MIME i zamiast tego polegać na jawnie zadeklarowanej wartości. Bez tego ustawienia, jeśli złośliwy plik JavaScript zostałby zamaskowany jako obraz, taki jak PNG, plik JavaScript zostałby wykonany. Po włączeniu opcji X-Content-Type-Options plik będzie traktowany jako obraz, którego nie można wczytać, ponieważ plik nie ma prawidłowego formatu obrazu.

X-Content-Type-Options nie jest szczególnie potrzebne w witrynie internetowej, która korzysta wyłącznie z zasobów własnych, ponieważ nie ma szans na przypadkowe udostępnienie złośliwego pliku. Jeśli witryna korzysta z treści stron trzecich, takich jak zasoby zewnętrzne lub przesłane przez użytkowników, X-Content-Type-Options zapewnia ochronę przed tego typu atakami.