X-Content-Type-Options

Nagłówek HTTP X-Content-Type-Options pokrótce opisałem w artykule Nagłówki bezpieczeństwa strony internetowej.
W tym artykule przedstawię go trochę szerzej.

X-Content-Type-Options jest znacznikiem używanym przez serwer do wskazania, że typy MIME (ang. Multipurpose Internet Mail Extensions), które znajdują się w nagłówkach Content-Type, powinny być przestrzegane i nie można ich zmieniać. Pozwala on uniknąć podsłuchiwania typu MIME. Jednocześnie przekazuje informacje, że typy MIME są celowo skonfigurowane. Ten nagłówek wprowadził Microsoft w IE 8 jako sposób dla webmasterów na blokowanie podsłuchiwania treści, które miało miejsce i może przekształcić niewykonywalne typy MIME w wykonywalne typy MIME. Od tego czasu inne przeglądarki wprowadziły go, nawet jeśli ich algorytmy sniffingu MIME były mniej agresywne. Począwszy od Firefoksa 72, dokumenty najwyższego poziomu również unikają sniffingu MIME (jeśli podano Content-type). Może to spowodować, że strony internetowe HTML będą pobierane zamiast renderowane, gdy są obsługiwane z typem MIME innym niż text/html.

Składnia

X-Content-Type-Options: nosniff

Dyrektywa

nosniff

Blokuje żądanie, jeśli miejsce docelowe żądania jest typu style a typem MIME nie jest text/css, lub typu script, a typem MIME nie jest typ MIME JavaScript.

Jest to łatwy do skonfigurowania nagłówek, który ma tylko jedną poprawną wartość – nosniff. X-Content-Type-Options w tej konfiguracji wymusi na przeglądarce odpowiedni sposób zachowania. Efekt jest taki, że przeglądarka nie „zgaduje” jaki rodzaj danych jest do przekazania. Jeśli rozszerzeniem jest „zip”, przeglądarka powinna otrzymać plik .zip, a nie coś innego (.exe). W przeciwnym razie przeglądarka może być narażona i podstępnie zmuszona do wykonania skryptu, podczas gdy użytkownik jest przekonany, że pobiera bezpieczny plik.

Konfiguracja X-Content-Type-Options

Dla serwera NginX:

add_header X-Content-Type-Options "nosniff" always;

Dla serwera Apache:

Header always set X-Content-Type-Options "nosniff"

Podsumowanie X-Content-Type-Options

Jeśli wcześniej ustawiliśmy nagłówek Permissions Policy, Strict Transport Security oraz X-Frame-Options przystępujemy do konfiguracji obecnego. Efekty widzimy na stronie https://securityheaders.com/ i kolejny z obszarów zaświeci się na zielono.

x-content-type-options
Konfiguracja X-Content-Type-Options na stronie testowej

Jest to kolejny z elementów mających na celu poprawę bezpieczeństwa naszej witryny. Jest to też kolejny z kroków do uzyskania końcowego efektu, jaki opisałem w artykule Strona internetowa – jak ją założyć?

Jeżeli potrzebujesz więcej informacji na temat tego nagłówka, znajdziesz je w artykule.