Co to jest „X-Content-Type-Options = nosniff”?

291

Przeprowadzam pewne testy penetracyjne na moim hoście lokalnym za pomocą OWASP ZAP, który stale zgłasza ten komunikat:

Nagłówek Anti-MIME-Sniffing X-Content-Type-Options nie został ustawiony na „nosniff”

Ta kontrola dotyczy tylko Internet Explorera 8 i Google Chrome. Upewnij się, że każda strona ustawia nagłówek Content-Type i X-CONTENT-TYPE-OPTIONS, jeśli nagłówek Content-Type jest nieznany

Nie mam pojęcia, co to znaczy, i nie mogłem znaleźć niczego online. Próbowałem dodać:

<meta content="text/html; charset=UTF-8; X-Content-Type-Options=nosniff" http-equiv="Content-Type" />

ale wciąż dostaję ostrzeżenie.

Jaki jest prawidłowy sposób ustawienia parametru?

Koffeehaus
źródło

Odpowiedzi:

178

Zapobiega to wąchaniu przez przeglądarkę typu MIME. Większość przeglądarek przestrzega teraz tego nagłówka, w tym Chrome / Chromium, Edge, IE> = 8.0, Firefox> = 50 i Opera> = 13. Zobacz:

https://blogs.msdn.com/b/ie/archive/2008/09/02/ie8-security-part-vi-beta-2-update.aspx?Redirected=true

Wysłanie nowego nagłówka odpowiedzi X-Content-Type-Options z wartością nosniff zapobiegnie węszeniu MIME przez Internet Explorer w odpowiedzi od zadeklarowanego typu zawartości.

EDYTOWAĆ:

Aha, to nagłówek HTTP, a nie opcja metatagu HTML.

Zobacz także: http://msdn.microsoft.com/en-us/library/ie/gg622941(v=vs.85).aspx

Remi Gacogne
źródło
22
Musisz o tym wspomnieć for servers hosting untrusted content. W przypadku witryn, które nie wyświetlają treści przesłanych przez użytkowników, nie trzeba tego ustawiać.
machineaddict
12
@machineaddict, Wrong . Wąchanie nastąpi niezależnie od tego, czy treść jest zaufana czy niezaufana. Zobacz security.stackexchange.com/a/11761/2379 . Zniszczy Twoją witrynę w subtelny sposób. Zawsze wyłącz wąchanie, jeśli nie lubisz niespodzianek.
Pacerier
32
Myślę, że przegapiłeś część „Co to jest wąchanie typu MIME?”
VarunAgw
3
firefoxobsługuje teraz także ten nagłówek: developer.mozilla.org/en-US/docs/Web/HTTP/Headers/…
VasiliNovikov
„Wymuszanie” nagłówka może być błędnie interpretowane jako „wymaganie”, zmieniłem je na „szanowanie”.
Charlie
135

Opis

Ustawienie X-Content-Type-Optionsnagłówka odpowiedzi HTTP serwera, aby nosniffinstruować przeglądarki, aby wyłączały zawartość lub wąchanie MIME, które jest używane do przesłonięcia Content-Typenagłówków odpowiedzi w celu odgadnięcia i przetworzenia danych przy użyciu niejawnego typu zawartości. Chociaż może to być wygodne w niektórych scenariuszach, może również prowadzić do niektórych ataków wymienionych poniżej. Skonfigurowanie serwera tak, aby X-Content-Type-Optionszwracał zestaw nagłówków odpowiedzi HTTP nosniff, instruuje przeglądarki obsługujące podsłuch MIME, aby korzystały z dostarczonego przez serwer Content-Typei nie interpretowały treści jako innego typu treści.

Obsługa przeglądarki

X-Content-Type-OptionsNagłówka odpowiedzi HTTP jest obsługiwana w Chrome, Firefox i EDGE, a także innych przeglądarek. Najnowsze wsparcie przeglądarki jest dostępne w tabeli zgodności przeglądarki Mozilla Developer Network (MDN) dla opcji X-Content-Type-Type:

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Content-Type-Options

Kontrataki

  1. MIME Confusion Attack umożliwia ataki za pośrednictwem stron z treściami generowanymi przez użytkowników, umożliwiając użytkownikom przesyłanie złośliwego kodu, który jest następnie wykonywany przez przeglądarki, które interpretują pliki przy użyciu alternatywnych typów treści, np. Niejawnychapplication/javascriptlub jawnychtext/plain. Może to spowodować atak typu „drive-by download”, który jest częstym wektorem ataku phishingowego. Witryny, które udostępniają treści generowane przez użytkowników, powinny używać tego nagłówka, aby chronić swoich użytkowników. Wspominają o tym VeraCode i OWASP, który mówi:

    Zmniejsza to narażenie na ataki typu drive-by download i witryny obsługujące treści przesłane przez użytkowników, które dzięki sprytnemu nazewnictwu mogą być traktowane przez MSIE jako pliki wykonywalne lub dynamiczne HTML.

  2. Nieautoryzowane Hotlinkowanie można również włączyć przezContent-Typewąchanie. Poprzez hotlinkowanie do stron z zasobami w jednym celu, np. Przeglądanie, aplikacje mogą polegać na węszeniu typu zawartości i generować duży ruch na stronach w innym celu, w którym może to być niezgodne z ich warunkami świadczenia usług, np. GitHub wyświetla kod JavaScript do przeglądania, ale nie do wykonania:

    Niektórzy użytkownicy brzydkie niż ludzkie (czyli komputery) podjęły aktywów „hotlinking” za pomocą funkcji widoku surowego - stosując surowe URL jako srcdotyczący <script>lub <img>tagu. Problem polega na tym, że nie są to zasoby statyczne. Widok nieprzetworzonych plików, jak każdy inny widok w aplikacji Rails, musi zostać zrenderowany przed zwróceniem do użytkownika. Szybko stanowi to duże obciążenie dla wydajności. W przeszłości byliśmy zmuszeni blokować popularne treści udostępniane w ten sposób, ponieważ nadmiernie obciążały nasze serwery.

Grokify
źródło
Kto pomyślał, że decyzja o zignorowaniu wyraźnego typu treści i zgadywania byłaby dobrym pomysłem? omg ...
Sam Sirry
105
# prevent mime based attacks
Header set X-Content-Type-Options "nosniff"

Ten nagłówek zapobiega atakom opartym na „mimach”. Nagłówek ten uniemożliwia Internet Explorerowi wykrywanie przez MIME odpowiedzi poza zadeklarowanym typem treści, ponieważ nagłówek instruuje przeglądarkę, aby nie zastępowała typu zawartości odpowiedzi. W przypadku opcji nosniff, jeśli serwer powie, że treść to text / html, przeglądarka wyświetli go jako text / html.

http://stopmalvertising.com/security/securing-your-website-with-.htaccess/.htaccess-http-headers.html

Zwycięstwo Jun Bae
źródło
1
Czy nie powinno tak być zawsze ?! Dziwne wydaje mi się, że przeglądarka próbuje działać „inteligentnie” i ignoruje wyraźny nagłówek typu zawartości.
Sam Sirry
25

W przypadku serwerów Microsoft IIS możesz włączyć ten nagłówek za pomocą swojego web.configpliku:

<system.webServer>
    <httpProtocol>
      <customHeaders>
        <remove name="X-Content-Type-Options"/>
        <add name="X-Content-Type-Options" value="nosniff"/>
      </customHeaders>
    </httpProtocol>
</system.webServer>

I gotowe.

Wejdź
źródło
3
Możliwe jest również ustawienie niestandardowych nagłówków w IIS, ale twoje rozwiązanie jest lepsze, ponieważ może być kontrolowane przez źródło, a nie konfigurowane.
ajeh
9

Nagłówek HTTP odpowiedzi X-Content-Type-Options jest znacznikiem używanym przez serwer do wskazania, że ​​typy MIME reklamowane w nagłówkach Content-Type nie powinny być zmieniane i należy ich przestrzegać. Pozwala to zrezygnować z wąchania typu MIME lub, innymi słowy, jest to sposób na stwierdzenie, że webmasterzy wiedzieli, co robią.

Składnia:

Opcje X-Content-Type: nosniff

Dyrektywy:

nosniff Blokuje żądanie, jeśli żądanym typem jest 1. „styl”, a typ MIME nie jest „text / css” lub 2. „skrypt”, a typ MIME nie jest typem MIME JavaScript.

Uwaga: nosniff dotyczy tylko typów „skryptowych” i „stylowych”. Również stosowanie nosniff do zdjęć okazało się niezgodne z istniejącymi stronami internetowymi.

Specyfikacja:

https://fetch.spec.whatwg.org/#x-content-type-options-header

Sahil Aggarwal
źródło