Cosa fa X-Content-Type-Options?

click fraud protection

Le intestazioni di sicurezza sono un sottoinsieme dell'intestazione di risposta HTTP che può essere impostata da un server Web che applica un controllo di sicurezza nei browser. Le intestazioni HTTP sono una forma di metadati inviati con richieste e risposte web. L'intestazione di sicurezza "X-Content-Type-Options" impedisce ai browser di eseguire lo sniffing MIME.

Nota: le intestazioni HTTP non sono esclusive di HTTP e vengono utilizzate anche in HTTPS.

Che cos'è lo sniffing MIME?

Quando vengono inviati dati sul Web, uno dei metadati inclusi è un tipo MIME. Le estensioni di posta Internet multiuso, o tipi MIME, sono uno standard utilizzato per definire il tipo di dati che contiene un file, che indica come deve essere gestito il file. In genere, il tipo MIME è costituito da un tipo e un sottotipo con un parametro e un valore facoltativi. Ad esempio, un file di testo UTF-8 avrebbe il tipo MIME "text/plain; set di caratteri=UTF-8”. In questo esempio, il tipo è "text", il sottotipo è "plain", il parametro è "charset" e il valore è "UTF-8".

Per prevenire l'etichettatura e la gestione errate dei file, i server Web in genere eseguono lo sniffing MIME. Questo è un processo in cui il tipo MIME esplicitamente dichiarato viene ignorato e viene invece analizzato l'inizio del file. La maggior parte dei tipi di file include sequenze di intestazione che indicano di che tipo di file si tratta. La maggior parte delle volte, i tipi MIME sono corretti e l'analisi del file non fa alcuna differenza. Se c'è una differenza, i server web useranno il tipo di file sniffato per determinare come gestire il file piuttosto che il tipo MIME dichiarato.

Il problema si verifica se un utente malintenzionato riesce a caricare un file come un'immagine PNG, ma il file è in realtà qualcos'altro come il codice JavaScript. Per tipi di file simili, come due tipi di testo, questo potrebbe non causare troppi problemi. Tuttavia, diventa un problema serio se è possibile eseguire un file perfettamente innocuo.

Cosa fa X-Content-Type-Options?

L'intestazione X-Content-Type-Options ha un solo valore possibile "X-Content-Type-Options: nosniff". L'abilitazione informa il browser dell'utente che non deve eseguire lo sniffing del tipo MIME e basarsi invece sul valore dichiarato esplicitamente. Senza questa impostazione, se un file JavaScript dannoso fosse mascherato da un'immagine come un PNG, il file JavaScript verrebbe eseguito. Con X-Content-Type-Options abilitato, il file verrà trattato come un'immagine che non riesce a caricarsi poiché il file non è un formato immagine valido.

X-Content-Type-Options non è particolarmente necessario su un sito Web che utilizza risorse interamente di prima parte, poiché non è possibile che un file dannoso venga servito accidentalmente. Se un sito Web utilizza contenuti di terze parti come risorse esterne o inviate dall'utente, X-Content-Type-Options fornisce protezione contro questo tipo di attacco.