X-Content-Type-Options: nosniff (non è la CSP, non è il banner)
Data Pubblicazione: 23/09/2026 | | Sicurezza

X-Content-Type-Options: nosniff (non è la CSP, non è il banner)

X-Content-Type-Options è un header di risposta. Dice al browser di rispettare i MIME in Content-Type. nosniff è l'unico valore. Non è la CSP. Il banner cookie non lo imposta.

Il banner cookie non scrive l’header X-Content-Type-Options. X-Content-Type-Options è un header di risposta con cui il server dice al browser di rispettare i MIME dichiarati in Content-Type e di non cambiarli. MDN: si evita il MIME sniffing. Un solo valore esiste: nosniff. Non è la CSP. Non è il consenso al marketing.

In breve: header di risposta. Sintassi X-Content-Type-Options: nosniff. Due effetti: blocca script e fogli di stile se il MIME non torna; sul resto, compreso un HTML, usa il Content-Type così com’è. Un text/plain con markup HTML non diventa una pagina. Verifica del 23 settembre 2026 su MDN (ultima modifica 17 marzo 2026).

Cosa trovi in questo articolo

  1. Cosa è nosniff (e cosa non è il banner)

  2. Due effetti: blocco e sniffing spento

  3. Header, Content-Type, Observatory

  4. Errori da evitare

  5. In sintesi

Cosa è nosniff (e cosa non è il banner)

MDN, sulla pagina dell’header X-Content-Type-Options, parte da un fatto: i tipi MIME pubblicati in Content-Type vanno rispettati, non riscritti. Il browser, senza questo header, può guardare i primi byte e «indovinare» il tipo. Con nosniff quella congettura si spegne. MDN aggiunge che i tester di sicurezza del sito si aspettano questo header — e che Content-Type sia impostato correttamente su tutte le risorse.

Non è la CSP. La CSP decide da dove possono arrivare script, stili, frame. nosniff decide se un file dichiarato text/plain può essere eseguito come HTML o come JavaScript. Non è CORS: CORS decide chi può leggere una risposta. Non è Permissions-Policy: quello spegne camera e geolocalizzazione. Non è il cookie SameSite. Il banner che chiede il marketing non ferma lo sniffing. Quattro header, un popup, cinque mestieri.

Questo pezzo sta nel cluster Sicurezza, accanto alla CSP e a Mixed content. La CSP limita cosa la pagina può eseguire. nosniff limita come il browser interpreta i byte. Due piani, due header.

Due effetti: blocco e sniffing spento

MDN, stessa pagina: la direttiva nosniff ha due effetti, a seconda del contesto. Specifica di riferimento: Fetch, sezione X-Content-Type-Options. Lo sniffing in sé sta nella MIME Sniffing specification.

ContestoCosa fa il browser, secondo MDN
destinazione script o styleblocca la risposta se il MIME non è un JavaScript MIME type (script) o text/css (fogli di stile)
ogni altro tipo, navigazioni HTML compreseusa il Content-Type dichiarato, senza esaminare il contenuto per indovinare il tipo

Esempio da MDN: risposta Content-Type: text/plain più X-Content-Type-Options: nosniff. Il browser non la tratta come HTML, anche se nel corpo c’è markup. Serve a evitare che un file caricato dall’utente, dichiarato testo, venga eseguito come documento. Il server ha detto testo, resta testo. Senza nosniff, alcuni browser storici interpretavano quel file come pagina.

Sintassi, una riga: X-Content-Type-Options: nosniff.

Non ci sono altre direttive. Non esiste sniff. Non esiste una allowlist di origini. O c’è nosniff, o l’header non c’è.

Header, Content-Type, Observatory

MDN: è un header di risposta. Non è un meta in pagina. Non è un attributo su un elemento del documento. Si mette sulla risposta HTTP, di solito sul reverse proxy o sul web server, insieme a Content-Type corretto. Un nosniff su un file JavaScript servito come text/plain non «sistema» il MIME: lo blocca. Prima si sistema Content-Type, poi si accende nosniff.

MDN rimanda a HTTP Observatory per testare la configurazione, alla definizione originale Microsoft dell’header, e a Mitigating MIME Confusion Attacks in Firefox. Si verifica sugli header della risposta, in staging, e tentando di caricare uno script con il MIME sbagliato. Non sul lucchetto della home. Non sul testo del banner. Il certificato TLS cifra il transito; non decide se un upload è HTML. Mixed content è un altro piano: HTTPS con dipendenze in HTTP. SRI è l’hash sul CDN, non il MIME.

Errori da evitare

  • Lasciare lo sniffing acceso e un upload utente in text/plain: senza nosniff il browser può interpretarlo come HTML.

  • Mettere nosniff e servire gli script come text/plain o application/octet-stream: MDN, destinazione script, la risposta viene bloccata.

  • Trattare il banner cookie come X-Content-Type-Options: il consenso non scrive l’header.

  • Confondere nosniff con CSP, CORS o Permissions-Policy: tre header, tre mestieri, più questo.

  • Fidarsi del plugin «security pack» senza leggere X-Content-Type-Options e Content-Type sulla risposta.

In sintesi

X-Content-Type-Options è un header di risposta. L’unico valore è nosniff. Blocca script e CSS col MIME sbagliato e ferma lo sniffing sul resto. Non è la CSP. Non è il banner cookie. Prima si sistema Content-Type, poi si accende l’header. MDN, 23 settembre 2026.

Domande Frequenti

MDN: un header di risposta che indica di rispettare i tipi MIME dichiarati in Content-Type e di non cambiarli. Serve a evitare il MIME sniffing. L'unico valore è nosniff. Non è il banner cookie, non è la CSP, non è CORS.
No. La CSP decide da dove possono arrivare script, stili, frame. nosniff decide se un file dichiarato text/plain può essere eseguito come HTML o come JavaScript. Due header, due mestieri.
MDN, due effetti. Su risorse di codice e fogli di stile: il browser blocca la risposta se il MIME dichiarato non è quello atteso. Sugli altri tipi, documenti compresi: usa il Content-Type dichiarato, senza esaminare il contenuto per indovinare il tipo. Un file dichiarato testo, anche con markup, resta testo.
No. Il consenso è un testo in pagina. X-Content-Type-Options è un header di risposta. Si verifica in Network, non sul testo del banner.
No. MDN: se il MIME non torna, la risposta viene bloccata. Prima si sistema Content-Type, poi si accende nosniff. I tester di sicurezza si aspettano entrambi.

Potrebbe interessarti anche...