En navegadores más antiguos, la respuesta es sí, este tipo de ataque es posible , debido a la compatibilidad de algunos navegadores con el rastreo de contenido MIME. Puede buscar ataques de rastreo de contenido en Google y encontrará muchos más detalles.
Para defenderse de él, establezca el encabezado X-Content-Type-Options: nosniff
(solo se admite en IE8 e IE9, creo), y asegúrese de proporcionar un tipo de contenido válido en el encabezado Content-Type:
. Esos deshabilitarán la detección del tipo de contenido en muchos navegadores (al menos en los navegadores IE8, IE9 y no IE).
Ver también
¿Utiliza la combinación de extensión de archivo y tipo MIME (como resultado del archivo -i -b) para determinar los archivos no seguros? ,
¿X-Content-Type-Type realmente previene los ataques de rastreo de contenido? ,
¿Cuáles son los riesgos de seguridad de permitir que los usuarios suban contenido a mi sitio? ,
¿Cómo puedo protegerme de las vulnerabilidades de las imágenes? ,
¿Es seguro servir cualquier archivo subido por el usuario solo con los tipos de contenido MIME incluidos en la lista blanca? ,
protección de inhalación MIME ,
¿Por qué debería restringir el tipo de contenido de los archivos que se suben a mi sitio? .
También recomiendo que sirvas contenido subido por el usuario de un dominio separado, para que incluya el contenido del usuario y se asegure de que no pueda manipular tu contenido. Por ejemplo, puede alojar su contenido en www.example.com
y el contenido proporcionado por el usuario en uploads.example.com
.
Actualización: acabo de enterarme de que la configuración de los encabezados Content-Type
y X-Content-Type-Options
no es suficiente para la seguridad. Al parecer, Flash ignora el encabezado Content-Type , que podría permitir la carga de un archivo SWF malicioso, que puede hacer todo lo que pueda Lo harías con un XSS. (Suspiro, estúpido Flash.) Desafortunadamente, ninguna cantidad de encabezados puede detener este ataque. En consecuencia, parece que la única solución segura es alojar el contenido subido por el usuario en un dominio separado.