Che cos'è "X-Content-Type-Options = nosniff"?


291

Sto eseguendo alcuni test di penetrazione sul mio localhost con OWASP ZAP e continua a segnalare questo messaggio:

L'intestazione X-Content-Type-Options di Anti-MIME-Sniffing non è stata impostata su 'nosniff'

Questo controllo è specifico per Internet Explorer 8 e Google Chrome. Assicurarsi che ogni pagina imposta un'intestazione Content-Type e X-CONTENT-TYPE-OPTIONS se l'intestazione Content-Type è sconosciuta

Non ho idea di cosa significhi e non sono riuscito a trovare nulla online. Ho provato ad aggiungere:

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

ma ricevo ancora l'avviso.

Qual è il modo corretto di impostare il parametro?

Risposte:


178

Impedisce al browser di eseguire lo sniffing di tipo MIME. La maggior parte dei browser ora sta rispettando questa intestazione, inclusi Chrome / Chromium, Edge, IE> = 8.0, Firefox> = 50 e Opera> = 13. Vedi:

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

L'invio della nuova intestazione di risposta X-Content-Type-Options con il valore nosniff impedirà a Internet Explorer di MIME annusare una risposta dal tipo di contenuto dichiarato.

MODIFICARE:

Oh, e questa è un'intestazione HTTP, non un'opzione di meta tag HTML.

Vedi anche: http://msdn.microsoft.com/en-us/library/ie/gg622941(v=vs.85).aspx


22
Devi dire che lo è for servers hosting untrusted content. Per i siti Web che non visualizzano contenuti dai caricamenti degli utenti, non è necessario impostare questo.
machineaddict,

12
@machineaddict, Wrong . Lo sniffing avverrà indipendentemente dal fatto che il contenuto sia attendibile o non attendibile. Vedi security.stackexchange.com/a/11761/2379 . Romperà il tuo sito in modi sottili. Disattiva sempre lo sniffing se non ti piacciono le sorprese.
Pacerier,

33
Penso che ti sia sfuggita la parte "Che cos'è lo sniffing di tipo MIME?"
VarunAgw,

3
firefoxsupporta anche questa intestazione ora: developer.mozilla.org/en-US/docs/Web/HTTP/Headers/…
VasiliNovikov

"Applicare" l'intestazione potrebbe essere interpretato erroneamente come "obbligatorio", l'ho modificato in "rispetto".
Charlie,

135

Descrizione

L'impostazione X-Content-Type-Optionsdell'intestazione di risposta HTTP di un server per indicare ai nosniffbrowser di disabilitare il contenuto o lo sniffing MIME che viene utilizzato per sovrascrivere le Content-Typeintestazioni di risposta per indovinare ed elaborare i dati utilizzando un tipo di contenuto implicito. Mentre questo può essere conveniente in alcuni scenari, può anche portare ad alcuni attacchi elencati di seguito. La configurazione del server in cui restituire l' X-Content-Type-Optionsintestazione della risposta HTTP impostata nosniffindica ai browser che supportano lo sniffing MIME di utilizzare il server fornito Content-Typee di non interpretare il contenuto come un diverso tipo di contenuto.

Supporto per il browser

L' X-Content-Type-Optionsintestazione della risposta HTTP è supportata in Chrome, Firefox, Edge e altri browser. Il supporto browser più recente è disponibile nella tabella di compatibilità del browser Mozilla Developer Network (MDN) per X-Content-Type-Options:

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

Attacchi neutralizzati

  1. MIME Confusion Attack abilita gli attacchi tramite siti di contenuti generati dagli utenti consentendo agli utenti di caricare codice dannoso che viene quindi eseguito dai browser che interpreteranno i file utilizzando tipi di contenuto alternativi, ad esempio implicitoapplication/javascripto esplicitotext/plain. Ciò può provocare un attacco "download drive-by" che è un vettore di attacco comune per il phishing. I siti che ospitano contenuti generati dagli utenti dovrebbero utilizzare questa intestazione per proteggere i propri utenti. Questo è menzionato da VeraCode e OWASP che dice quanto segue:

    Ciò riduce l'esposizione agli attacchi drive-by download e ai siti che servono contenuti caricati dagli utenti che, con nomi intelligenti, potrebbero essere trattati da MSIE come file HTML eseguibili o dinamici.

  2. L'hotlinking non autorizzato può anche essere abilitatoContent-Typeannusando. Tramite il collegamento a siti con risorse per uno scopo, ad esempio la visualizzazione, le app possono fare affidamento sullo sniffing del tipo di contenuto e generare molto traffico sui siti per un altro scopo in cui potrebbero essere in contrasto con i loro termini di servizio, ad esempio GitHub visualizza il codice JavaScript per la visualizzazione, ma non per l'esecuzione:

    Alcuni fastidiosi utenti non umani (vale a dire i computer) hanno intrapreso attività di "hotlinking" tramite la funzionalità di visualizzazione non elaborata, utilizzando l'URL non elaborato come tag srcfor <script>o <img>. Il problema è che questi non sono beni statici. La vista del file non elaborato, come qualsiasi altra vista in un'app Rails, deve essere renderizzata prima di essere restituita all'utente. Ciò si aggiunge rapidamente a un grande tributo sulle prestazioni. In passato siamo stati costretti a bloccare i contenuti popolari offerti in questo modo perché hanno messo a dura prova i nostri server.


Chi pensava che decidere di ignorare un tipo di contenuto esplicito e di usare il lavoro di ipotesi sarebbe stata una buona idea? omg ...
Sam Sirry,

105
# prevent mime based attacks
Header set X-Content-Type-Options "nosniff"

Questa intestazione impedisce attacchi basati su "mime". Questa intestazione impedisce a Internet Explorer di sniffare MIME una risposta lontano dal tipo di contenuto dichiarato poiché l'intestazione indica al browser di non sovrascrivere il tipo di contenuto di risposta. Con l'opzione nosniff, se il server dice che il contenuto è text / html, il browser lo renderà come text / html.

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


1
Non dovrebbe essere sempre così ?! Trovo strano che un browser proverà ad agire in modo "intelligente" e ignorare un'intestazione esplicita del tipo di contenuto.
Sam Sirry,

25

Per i server Microsoft IIS, puoi abilitare questa intestazione tramite il tuo web.configfile:

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

E il gioco è fatto.


3
È anche possibile impostare intestazioni personalizzate in IIS, ma la soluzione è migliore in quanto può essere controllata dall'origine anziché gestita dalla configurazione.
ajeh

9

L'intestazione HTTP di risposta X-Content-Type-Options è un marker utilizzato dal server per indicare che i tipi MIME pubblicizzati nelle intestazioni Content-Type non devono essere modificati ed essere seguiti. Ciò consente di annullare l'annullamento del tipo MIME o, in altre parole, è un modo per dire che i webmaster sapevano cosa stavano facendo.

Sintassi:

X-Content-Type-Options: nosniff

Direttive:

nosniff Blocca una richiesta se il tipo richiesto è 1. "style" e il tipo MIME non è "text / css" o 2. "script" e il tipo MIME non è un tipo MIME JavaScript.

Nota: nosniff si applica solo ai tipi "script" e "style". Anche l'applicazione di nosniff alle immagini si è rivelata incompatibile con i siti Web esistenti.

Specifica:

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.