Falta el Header X-Content-Type-Options
El header X-Content-Type-Options: nosniff está ausente, permitiendo que los navegadores adivinen el tipo de contenido de una respuesta y potencialmente ejecuten contenido como script.
Cómo Funciona
Los navegadores más antiguos intentan ser 'útiles' adivinando qué es un archivo, aunque el servidor diga que es text/plain. Si un atacante sube un archivo con contenido HTML o JavaScript pero con extensión .txt, el navegador podría ejecutarlo como script. `nosniff` le dice al navegador que confíe en el Content-Type declarado y nada más.
// MAL: sin header X-Content-Type-Options
// Un usuario sube 'script.txt' con <script>alert(1)</script>
// El navegador puede ejecutarlo como HTML si falta nosniff// BIEN: agrega nosniff a todas las respuestas
export default {
async headers() {
return [{
source: '/(.*)',
headers: [
{ key: 'X-Content-Type-Options', value: 'nosniff' }
]
}];
}
};Ejemplo Real
Los ataques de MIME sniffing eran comunes en las primeras plataformas sociales que alojaban contenido subido por usuarios. Un usuario subía una 'foto de perfil' que en realidad era HTML válido con script embebido, que IE ejecutaba.
Cómo Prevenirlo
- Agrega X-Content-Type-Options: nosniff a todas las respuestas HTTP
- Siempre configura headers Content-Type explícitos en las respuestas de tu API (application/json, no text/plain)
- Valida el contenido de archivos subidos (no solo la extensión) antes de servirlos
- Es una victoria rápida — una línea en la config de headers de Next.js
Tecnologías Afectadas
Data Hogo detecta esta vulnerabilidad automáticamente.
Escanea Tu Repo GratisVulnerabilidades Relacionadas
Falta el Header Content-Security-Policy
mediumEl header Content-Security-Policy (CSP) está ausente, dejando a los navegadores sin instrucciones sobre qué fuentes de scripts, estilos y recursos confiar.
Falta el Header X-Frame-Options
mediumEl header X-Frame-Options está ausente, permitiendo a atacantes embeber tu app en un iframe invisible y engañar usuarios para que hagan clic en tus elementos de UI (clickjacking).
Falta HTTP Strict Transport Security (HSTS)
mediumEl header Strict-Transport-Security está ausente, permitiendo a los navegadores conectarse por HTTP plano y habilitando ataques de downgrade donde un atacante intercepta tráfico no cifrado.
Cookies Sin Flag Secure
mediumCookies de sesión configuradas sin el flag Secure, permitiendo que se transmitan por conexiones HTTP no cifradas y sean interceptadas por atacantes en la red.