Was ist "X-Content-Type-Options = nosniff"?

291

Ich mache mit OWASP ZAP einige Penetrationstests auf meinem lokalen Host und es wird weiterhin folgende Meldung angezeigt:

Der Anti-MIME-Sniffing-Header X-Content-Type-Options wurde nicht auf 'nosniff' gesetzt.

Diese Prüfung gilt speziell für Internet Explorer 8 und Google Chrome. Stellen Sie sicher, dass jede Seite einen Content-Type-Header und die X-CONTENT-TYPE-OPTIONS enthält, wenn der Content-Type-Header unbekannt ist

Ich habe keine Ahnung, was dies bedeutet, und ich konnte online nichts finden. Ich habe versucht hinzuzufügen:

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

aber das bekomme ich immer noch alarmiert.

Wie wird der Parameter richtig eingestellt?

Koffeehaus
quelle

Antworten:

178

Es verhindert, dass der Browser MIME-Typ-Sniffing ausführt. Die meisten Browser respektieren diesen Header jetzt, einschließlich Chrome / Chromium, Edge, IE> = 8.0, Firefox> = 50 und Opera> = 13. Siehe:

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

Durch das Senden des neuen Antwortheaders für X-Content-Type-Options mit dem Wert nosniff wird verhindert, dass Internet Explorer eine Antwort vom deklarierten Inhaltstyp MIME-schnüffelt.

BEARBEITEN:

Oh und, das ist ein HTTP-Header, keine HTML-Meta-Tag-Option.

Siehe auch: http://msdn.microsoft.com/en-us/library/ie/gg622941(v=vs.85).aspx

Remi Gacogne
quelle
22
Sie müssen das erwähnen for servers hosting untrusted content. Für Websites, auf denen keine Inhalte aus Benutzer-Uploads angezeigt werden, müssen Sie dies nicht festlegen.
Machineaddict
12
@machineaddict, falsch . Das Schnüffeln erfolgt unabhängig davon, ob der Inhalt vertrauenswürdig oder nicht vertrauenswürdig ist. Siehe security.stackexchange.com/a/11761/2379 . Es wird Ihre Website auf subtile Weise brechen. Deaktivieren Sie das Schnüffeln immer, wenn Sie keine Überraschungen mögen.
Pacerier
33
Ich denke, Sie haben den Teil "Was ist MIME-Typ-Schnüffeln?" Verpasst.
VarunAgw
3
firefoxunterstützt diesen Header jetzt auch: developer.mozilla.org/en-US/docs/Web/HTTP/Headers/…
VasiliNovikov
Das 'Erzwingen' des Headers könnte als 'Erfordernis' missverstanden werden. Ich habe ihn in 'Respektieren' geändert.
Charlie
135

Beschreibung

Wenn Sie den X-Content-Type-OptionsHTTP- Antwortheader eines Servers so einstellen, dass nosniffBrowser angewiesen werden, Inhalte oder MIME-Sniffing zu deaktivieren, werden die Antwortheader überschrieben Content-Type, um die Daten mithilfe eines impliziten Inhaltstyps zu erraten und zu verarbeiten. Während dies in einigen Szenarien praktisch sein kann, kann es auch zu einigen unten aufgeführten Angriffen führen. Wenn Sie Ihren Server so konfigurieren, dass der festgelegte X-Content-Type-OptionsHTTP-Antwortheader zurückgegeben wird, nosniffwerden Browser, die MIME-Sniffing unterstützen, angewiesen, den vom Server bereitgestellten Content-TypeInhalt zu verwenden und den Inhalt nicht als anderen Inhaltstyp zu interpretieren.

Browser-Unterstützung

Der X-Content-Type-OptionsHTTP-Antwortheader wird in Chrome, Firefox und Edge sowie in anderen Browsern unterstützt. Die neueste Browserunterstützung ist in der Browserkompatibilitätstabelle des Mozilla Developer Network (MDN) für X-Content-Type-Optionen verfügbar:

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

Angriffe abgewehrt

  1. MIME Confusion Attack ermöglicht Angriffe über benutzergenerierte Inhaltsseiten, indem Benutzer schädlichen Code hochladen, der dann von Browsern ausgeführt wird, die die Dateien mit alternativen Inhaltstypen interpretieren, z.B. implizit oderapplication/javascriptexplizittext/plain. Dies kann zu einem "Drive-by-Download" -Angriff führen, der ein häufiger Angriffsvektor für Phishing ist. Websites, auf denen vom Benutzer generierte Inhalte gehostet werden, sollten diesen Header verwenden, um ihre Benutzer zu schützen. Dies wird von VeraCode und OWASP erwähnt , die Folgendes sagen:

    Dies reduziert die Gefährdung durch Drive-by-Download-Angriffe und Websites, die vom Benutzer hochgeladene Inhalte bereitstellen, die durch clevere Benennung von MSIE als ausführbare oder dynamische HTML-Dateien behandelt werden könnten.

  2. Nicht autorisiertes Hotlinking kann auch durchContent-TypeSchnüffelnaktiviert werden. Durch Hotlinks zu Websites mit Ressourcen für einen bestimmten Zweck, z. B. Anzeigen, können Apps auf das Sniffing von Inhalten angewiesen sein und viel Verkehr auf Websites für einen anderen Zweck generieren, wenn dies möglicherweise gegen ihre Nutzungsbedingungen verstößt, z. B.zeigt GitHub JavaScript-Code zum Anzeigen an. aber nicht zur Ausführung:

    Einige lästige nicht-menschliche Benutzer (nämlich Computer) haben Assets über die Raw-View-Funktion "hotlinking" - unter Verwendung der Raw-URL als srcfür ein <script>oder <img>Tag. Das Problem ist, dass dies keine statischen Assets sind. Die Rohdateiansicht muss wie jede andere Ansicht in einer Rails-App gerendert werden, bevor sie an den Benutzer zurückgegeben wird. Dies führt schnell zu einem hohen Leistungsverlust. In der Vergangenheit waren wir gezwungen, beliebte Inhalte zu blockieren, die auf diese Weise bereitgestellt wurden, da dies unsere Server übermäßig belastete.

Grokify
quelle
Wer hätte gedacht, dass es eine gute Idee wäre, einen expliziten Inhaltstyp zu ignorieren und Vermutungen anzustellen? omg ...
Sam Sirry
105
# prevent mime based attacks
Header set X-Content-Type-Options "nosniff"

Dieser Header verhindert "Mime" -basierte Angriffe. Dieser Header verhindert, dass Internet Explorer eine Antwort vom deklarierten Inhaltstyp MIME-schnüffelt, da der Header den Browser anweist, den Antwortinhaltstyp nicht zu überschreiben. Wenn der Server mit der Option nosniff angibt, dass der Inhalt Text / HTML ist, wird er vom Browser als Text / HTML gerendert.

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

Jun Bae gewonnen
quelle
1
Sollte das nicht immer der Fall sein?! Ich finde es seltsam, dass ein Browser versucht, "intelligent" zu handeln und einen expliziten Header vom Typ Inhalt zu ignorieren.
Sam Sirry
25

Für Microsoft IIS-Server können Sie diesen Header über Ihre web.configDatei aktivieren :

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

Und du bist fertig.

Komm herein
quelle
3
Es ist auch möglich, benutzerdefinierte Header in IIS festzulegen. Ihre Lösung ist jedoch besser, da sie eher quellengesteuert als konfigurationsverwaltet sein kann.
Ajeh
9

Der HTTP-Header für die X-Content-Type-Options-Antwort ist eine vom Server verwendete Markierung, die angibt, dass die in den Content-Type-Headern angegebenen MIME-Typen nicht geändert und befolgt werden sollten. Dies ermöglicht das Deaktivieren des MIME-Sniffing, oder mit anderen Worten, es ist eine Möglichkeit zu sagen, dass die Webmaster wussten, was sie taten.

Syntax :

X-Content-Type-Optionen: nosniff

Richtlinien:

nosniff Blockiert eine Anforderung, wenn der angeforderte Typ 1. "style" und der MIME-Typ nicht "text / css" oder 2. "script" und der MIME-Typ kein JavaScript-MIME-Typ ist.

Hinweis: nosniff gilt nur für die Typen "script" und "style". Auch das Anwenden von nosniff auf Bilder erwies sich als nicht kompatibel mit vorhandenen Websites.

Spezifikation :

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

Sahil Aggarwal
quelle