Les capçaleres de seguretat són un subconjunt de capçalera de resposta HTTP que es pot establir per un servidor web que aplica un control de seguretat als navegadors. Les capçaleres HTTP són una forma de metadades enviades amb sol·licituds i respostes web. La capçalera de seguretat "X-Content-Type-Options" impedeix que els navegadors facin l'olor MIME.
Nota: les capçaleres HTTP no són exclusives d'HTTP i també s'utilitzen a HTTPS.
Què és MIME sniffing?
Quan s'envia qualsevol dada a través del web, una de les metadades incloses és un tipus MIME. Les extensions de correu d'Internet polivalents, o tipus MIME, són un estàndard utilitzat per definir el tipus de dades que conté un fitxer, que indica com s'ha de gestionar el fitxer. Normalment, el tipus MIME consta d'un tipus i subtipus amb un paràmetre i un valor opcionals. Per exemple, un fitxer de text UTF-8 tindria el tipus MIME "text/plain;charset=UTF-8". En aquest exemple, el tipus és "text", el subtipus és "plain", el paràmetre és "charset" i el valor és "UTF-8".
Per evitar l'etiquetatge errònia i el mal maneig dels fitxers, els servidors web solen realitzar l'olor MIME. Aquest és un procés on s'ignora el tipus MIME indicat explícitament i, en canvi, s'analitza l'inici del fitxer. La majoria dels tipus de fitxer inclouen seqüències de capçalera que indiquen quin tipus de fitxer és. La majoria de les vegades, els tipus MIME són correctes i l'olor del fitxer no fa cap diferència. Tanmateix, si hi ha una diferència, els servidors web utilitzaran el tipus de fitxer sniffed per determinar com gestionar el fitxer en lloc del tipus MIME declarat.
El problema es produeix si un atacant aconsegueix carregar un fitxer com ara una imatge PNG, però el fitxer és realment una altra cosa com el codi JavaScript. Per a tipus de fitxer similars, com ara dos tipus de text, això no pot causar gaire problema. Tanmateix, es converteix en un problema seriós si es pot executar un fitxer perfectament innòcu.
Què fa X-Content-Type-Options?
La capçalera X-Content-Type-Options només té un valor possible "X-Content-Type-Options: nosniff". Activar-lo informa al navegador de l'usuari que no ha de realitzar un rastreig de tipus MIME i, en canvi, confiar en el valor declarat explícitament. Sense aquesta configuració, si un fitxer JavaScript maliciós s'hagués disfressat com una imatge com ara PNG, s'executaria el fitxer JavaScript. Amb X-Content-Type-Options activades, el fitxer es tractarà com una imatge que no es pot carregar, ja que el fitxer no és un format d'imatge vàlid.
X-Content-Type-Options no és especialment necessari en un lloc web que utilitza recursos totalment propis, ja que no hi ha cap possibilitat que un fitxer maliciós es distribueixi accidentalment. Si un lloc web utilitza contingut de tercers, com ara recursos externs o enviats per l'usuari, X-Content-Type-Options ofereix protecció contra aquest tipus d'atac.