¿Qué es "X-Content-Type-Options = nosniff"?

291

Estoy haciendo algunas pruebas de penetración en mi host local con OWASP ZAP, y sigue informando este mensaje:

El encabezado Anti-MIME-Sniffing X-Content-Type-Options no se configuró en 'nosniff'

Esta verificación es específica para Internet Explorer 8 y Google Chrome. Asegúrese de que cada página establezca un encabezado de tipo de contenido y las OPCIONES DE TIPO DE CONTENIDO X si el encabezado de tipo de contenido es desconocido

No tengo idea de lo que esto significa, y no pude encontrar nada en línea. He intentado agregar:

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

pero sigo recibiendo la alerta.

¿Cuál es la forma correcta de configurar el parámetro?

Koffeehaus
fuente

Respuestas:

178

Impide que el navegador realice el rastreo de tipo MIME. La mayoría de los navegadores ahora respetan este encabezado, incluidos Chrome / Chromium, Edge, IE> = 8.0, Firefox> = 50 y Opera> = 13. Consulte:

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

El envío del nuevo encabezado de respuesta X-Content-Type-Options con el valor nosniff evitará que Internet Explorer detecte MIME una respuesta lejos del tipo de contenido declarado.

EDITAR:

Ah, y eso es un encabezado HTTP, no una opción de metaetiqueta HTML.

Ver también: http://msdn.microsoft.com/en-us/library/ie/gg622941(v=vs.85).aspx

Remi Gacogne
fuente
22
Debes mencionar que es for servers hosting untrusted content. Para los sitios web que no muestran contenido de las cargas de los usuarios, no es necesario configurarlo.
machineaddict
12
@machineaddict, Incorrecto . El rastreo se realizará independientemente de si el contenido es confiable o no. Consulte security.stackexchange.com/a/11761/2379 . Romperá su sitio de maneras sutiles. Siempre desactive el olfateo si no le gustan las sorpresas.
Pacerier
33
Creo que te perdiste la parte "¿Qué es la detección de tipo MIME?"
VarunAgw
3
firefoxahora también admite este encabezado: developer.mozilla.org/en-US/docs/Web/HTTP/Headers/…
VasiliNovikov
'Hacer cumplir' el encabezado podría interpretarse erróneamente como 'exigir', lo cambié a 'respetar'.
Charlie
136

Descripción

Establecer el X-Content-Type-Optionsencabezado de respuesta HTTP de un servidor para nosniffindicar a los navegadores que deshabiliten el contenido o el rastreo MIME que se usa para anular los Content-Typeencabezados de respuesta para adivinar y procesar los datos utilizando un tipo de contenido implícito. Si bien esto puede ser conveniente en algunos escenarios, también puede conducir a algunos ataques enumerados a continuación. La configuración de su servidor para que devuelva el X-Content-Type-Optionsconjunto de encabezado de respuesta HTTP nosniffinstruirá a los navegadores que admiten la detección de MIME para usar el servidor proporcionado Content-Typey no interpretar el contenido como un tipo de contenido diferente.

Soporte de navegador

El X-Content-Type-Optionsencabezado de respuesta HTTP es compatible con Chrome, Firefox y Edge, así como con otros navegadores. La última compatibilidad del navegador está disponible en la Tabla de compatibilidad del navegador de Mozilla Developer Network (MDN) para X-Content-Type-Options:

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

Ataques contrarrestados

  1. MIME Confusion Attack permite ataques a través de sitios de contenido generados por los usuarios al permitir que los usuarios carguen códigos maliciosos que luego son ejecutados por navegadores que interpretarán los archivos utilizando tipos de contenido alternativos, por ejemplo, implícitosapplication/javascriptfrente a explícitostext/plain. Esto puede provocar un ataque de "descarga automática", que es un vector de ataque común para el phishing. Los sitios que alojan contenido generado por el usuario deben usar este encabezado para proteger a sus usuarios. Esto es mencionado por VeraCode y OWASP que dice lo siguiente:

    Esto reduce la exposición a ataques de descargas automáticas y sitios que sirven contenido subido por el usuario que, con un nombre inteligente, MSIE podría tratar como archivos HTML ejecutables o dinámicos.

  2. El Hotlinking no autorizado también se puede habilitarContent-Typeolfateando. Al hacer un enlace directo a sitios con recursos para un propósito, por ejemplo, la visualización, las aplicaciones pueden confiar en la detección de contenido y generar mucho tráfico en los sitios para otro propósito donde puede estar en contra de sus términos de servicio, por ejemplo, GitHub muestra el código JavaScript para ver, pero no para ejecución:

    Algunos usuarios molestos no humanos (es decir, ordenadores) han llevado a los activos "hotlinking" a través de la función de visualización en bruto - con ayuda de la URL en bruto como el srcde una <script>o <img>etiqueta. El problema es que estos no son activos estáticos. La vista de archivo sin formato, como cualquier otra vista en una aplicación Rails, debe representarse antes de devolverse al usuario. Esto se suma rápidamente a un gran costo en el rendimiento. En el pasado, nos hemos visto obligados a bloquear el contenido popular que se sirve de esta manera porque ejerce una presión excesiva sobre nuestros servidores.

Grokify
fuente
¿Quién pensó que sería una buena idea decidir ignorar un tipo de contenido explícito y usar conjeturas? Dios mío ...
Sam Sirry
105
# prevent mime based attacks
Header set X-Content-Type-Options "nosniff"

Este encabezado evita ataques basados ​​en "mime". Este encabezado evita que Internet Explorer detecte MIME una respuesta lejos del tipo de contenido declarado, ya que el encabezado indica al navegador que no anule el tipo de contenido de respuesta. Con la opción nosniff, si el servidor dice que el contenido es text / html, el navegador lo representará como text / html.

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

Won Jun Bae
fuente
1
¿No debería ser siempre este el caso? Me resulta extraño que un navegador intente actuar de manera "inteligente" e ignore un encabezado explícito de tipo contenido.
Sam Sirry
25

Para los servidores Microsoft IIS, puede habilitar este encabezado a través de su web.configarchivo:

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

Y ya terminaste.

Adelante
fuente
3
También es posible establecer encabezados personalizados en IIS, pero su solución es mejor ya que puede controlarse en origen en lugar de administrarse en la configuración.
ajeh
9

El encabezado HTTP de respuesta X-Content-Type-Options es un marcador utilizado por el servidor para indicar que los tipos MIME anunciados en los encabezados Content-Type no deben cambiarse y seguirse. Esto permite optar por la inhalación de tipo MIME o, en otras palabras, es una forma de decir que los webmasters sabían lo que estaban haciendo.

Sintaxis:

Opciones de tipo de contenido X: nosniff

Directivas:

nosniff Bloquea una solicitud si el tipo solicitado es 1. "estilo" y el tipo MIME no es "text / css", o 2. "script" y el tipo MIME no es un tipo MIME de JavaScript.

Nota: nosniff solo se aplica a los tipos "script" y "style". Además, aplicar nosniff a las imágenes resultó ser incompatible con los sitios web existentes.

Especificación:

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

Sahil Aggarwal
fuente