Defaults.Exposed › Fikser › MIME-sniffing-beskyttelse (X-Content-Type-Options)
Slik fikser du MIME-sniffing-beskyttelse (X-Content-Type-Options)
En en-linje topptekst som stopper nettlesere fra å gjette hva en fil egentlig er. Uten den kan en fil noen laster opp til siden — eller en fil på egne sider — leses feil av nettleseren og kjøres som kode, noe som er nøyaktig slik noen angrep gjør en tilsynelatende uskyldig opplasting til en måte å stjele kundenes økt.
Bunnlinjen for virksomheten din: Det å mangle denne toppteksten er et klart, skannerbart tegn på at det grunnleggende ikke er på plass. Alene tar den sjelden ned en side, men kombinert med et filoppskjema eller brukergenerert innhold åpner det en sti for en angriper til å kjøre skadelig kode i besøkendes nettlesere — kapre innloggede økt, stjele kortinntasting eller innloggingsdetaljer, og sette deg på feil side av en databrudd-samtale. Det er en av de billigste fiksene i sikkerhet: én linje, gratis, omtrent fem minutter.
Hva dette kan koste deg
- Enhver side der kunder eller ansatte kan laste opp filer (avatarer, dokumenter, supportvedlegg, listingsbilder) blir et mulig startpunkt for nettleser-side-angrep.
- En angriper kan forklede skadelig kode som et bilde eller tekstfil og ha besøkerens nettleser kjøre det — stjele den innloggede økt på siden din.
- Sikkerhetsspørreskjemaer, nettforsikringssjekker og bedriftskjøperskanning for denne toppteksten; fraværet leses som 'de gjør ikke det grunnleggende' og kan stalle eller ødelegge en avtale.
- Eldre nettlesere og noen integrasjoner 'snuser' innholdstyper og kan håndtere filer på måter som bryter tillit eller lekker data.
Hvorfor det er viktig. Nettlesere, når en server er vag om hva en fil er, vil prøve å gjette («snuse») innholdstypen. Angripere utnytter den gjetningen: last opp en fil serveren merker som et bilde, men lag innholdet slik at nettleseren bestemmer at det faktisk er JavaScript — og kjør det. X-Content-Type-Options: nosniff-toppteksten forteller alle nettlesere å slutte å gjette og stole på serverens angitte type, og lukker den hele klassen av tricks. Det er en scoret sjekk verdt 25 poeng og er vurdert som middels alvorlighetsgrad når den mangler.
Den korte versjonen for eieren
Det er en stille antagelse innebygd i alle nettlesere: når den laster ned en fil fra siden din, prøver den å finne ut hva slags fil det er. Vanligvis stoler den på serveren din. Men hvis serveren er vag, vil nettleseren gjette — og den gjetningen kalles MIME-sniffing.
Problemet er at angripere kan manipulere gjetningen. De kan lage en fil som serveren ærlig tror er et uskyldig bilde, men som nettleseren, overlatt til å gjette, bestemmer er faktisk et stykke programkode — og deretter kjøre det, rett inne i kundens nettleser, på domenet ditt.
Det er én en-linje instruksjon som slår av gjetningen: X-Content-Type-Options: nosniff. Den forteller alle nettlesere: «ikke gjett — stol nøyaktig på hva serveren forteller deg.» Det er hele fiksen. Den er gratis, tar omtrent fem minutter, og på en korrekt bygget side bryter den ingenting.
Denne sjekken ser etter den toppteksten. Hvis den mangler, mister du 25 poeng og det er vurdert som et middels-alvorlighetsproblem — ikke fordi toppteksten alene er en katastrofe, men fordi fraværet er et pålitelig tegn på at det grunnleggende ikke er låst ned.
Hva dette kan koste deg
Dette er realistiske, forretningsnivåscenarioer — ikke verste fall-teater.
-
Det «uskyldige vedlegget» som ikke var det. Du driver en supportportal eller et marked der kunder laster opp filer — kvitteringer, bilder, dokumenter. En angriper laster opp en fil systemet ditt lagrer og serverer som et bilde. Uten nosniff gjetter et offers nettleser at filen faktisk er skript og kjøre det — og stjeler stille den besøkendes innloggede økt på siden din. Nå er angriperen dem: legger inn bestillinger, leser meldinger, endrer detaljer. Du finner det ut når kunder begynner å klage på aktivitet de ikke gjorde.
-
Avtalen som staller på et sikkerhets-spørreskjema. En større kundes innkjøpsteam kjører en automatisk skanning av siden din før de signerer. Manglende sikkerhets-topptekster dukker opp umiddelbart. Selv om ingenting noen gang ble utnyttet, sier rapporten «grunnleggende web-sikkerhets-topptekster fraværende», og plutselig svarer du på utbedringsspørsmål og skyver slutningsdatoen ut med uker — over en fiks som ville ha tatt fem minutter.
-
Nettforsikringsfornyelsen som blir vanskeligere. Flere forsikringsgivere kjører nå eksterne skanninger før de siterer eller fornyer. Et rent topptekstprofil er billig bevis på hygiene; en manglende er et lite svart merke som, stablet med andre, dytter premien opp eller vilkårene ned.
-
Omdømmeskaden du ikke enkelt kan angre. Hvis en økt-kapring hendelse spores tilbake til en fil servert fra domenet ditt, er historien ikke «en obskur topptekst manglet» — det er «[virksomheten din] lekket kundekontoer.» Det er versjonen kunder husker, og det koster langt mer enn fiksen noen gang ville ha gjort.
Ingen av disse krever en sofistikert angriper. MIME-sniffing-misbruk er godt forstått og automatisert, noe som er nøyaktig grunnen til at skannere flaggt den manglende toppteksten så fast.
Hva det faktisk er
Når en nettleser mottar en fil, er serveren ment å merke den med en innholdstype (for eksempel image/png for et PNG-bilde eller text/html for en nettside). Historisk sett stolte nettlesere ikke fullt ut på den etiketten — delvis fordi noen servere fikk det galt — så de ville titte på filens faktiske bytes og bestemme for seg selv. Den tittingen er MIME-sniffing.
Det var en bekvemmelighet som ble et ansvar. Hvis en angriper kan få en fil på siden din (gjennom et opplastingsskjema, et kommentarfelt, et importert dokument) og påvirke innholdet, kan de lage noe serveren merker uskyldig, men nettleseren sniffer som kjørbart skript. Nettleseren kjører det deretter på domenet ditt, med all den tilliten domenet bærer.
X-Content-Type-Options: nosniff fjerner gjetningen fullstendig. Med det satt, får nettleseren beskjed om: bruk serverens erklærte type og ingenting annet. En fil merket som et bilde behandles som et bilde, punkt slutt — selv om innholdet ser ut som skript. Angrepsvektoren lukkes.
Hva «bra» ser ut som: hvert svar fra siden — sider og eiendeler alike — bærer nøyaktig denne toppteksten:
X-Content-Type-Options: nosniff
Det er ingen annen gyldig verdi og ingenting å tune. Hvis CDN-en og serveren begge legger den til (slik at du ser nosniff, nosniff), er det fint og teller fortsatt som bestått.
Slik fikser du det (gratis, ~5 minutter)
Send denne seksjonen til den som driver nettstedet — IT-personen, webutvikleren, eller webhotellets support. Fiksen er gratis og rask; det er ingenting å kjøpe. Det du ber om er enkelt: «Legg til svarhodet X-Content-Type-Options: nosniff på alle sider og eiendeler på siden.»
Her er detaljen for dem, per vanlig plattform.
Cloudflare (eller lignende CDN/proxy) — ofte det raskeste stedet å gjøre det, og dekker hele siden på én gang:
- Bruk en Response Header Transform Rule (Regler → Transformasjonsregler → Modifiser svarhodet) for å sette
X-Content-Type-Optionstilnosnifffor alle innkommende forespørsler.
Nginx — legg til inne i relevant server (eller location)-blokk:
add_header X-Content-Type-Options "nosniff" always;
always-nøkkelordet sørger for at det sendes på feilsvar også. Last inn Nginx på nytt etter lagring.
Apache — krever mod_headers aktivert; i nettstedsconfig eller .htaccess:
Header always set X-Content-Type-Options "nosniff"
IIS / Windows-webhotell — i web.config under <system.webServer>:
<httpProtocol>
<customHeaders>
<add name="X-Content-Type-Options" value="nosniff" />
</customHeaders>
</httpProtocol>
Node / Express — sett det for alle svar:
app.use((req, res, next) => {
res.setHeader('X-Content-Type-Options', 'nosniff');
next();
});
(Eller bruk helmet-pakken, som setter dette og flere andre sikkerhetstopptekster som standard.)
Google Workspace / Microsoft 365-nettsteder: disse administrerer e-posten og dokumentene dine, ikke webhotellet ditt, så toppteksten settes ikke der — den settes der nettstedet selv betjenes (CDN-en, nettserveren eller nettstedsbyggeren). Hvis du bruker en hosted nettstedsbygger (Squarespace, Wix, Shopify og lignende), legger mange til denne toppteksten for deg automatisk; sjekk resultatet heller enn å anta.
Etter distribusjon, verifiser det. Kjør skanningen på nytt, eller la utvikleren sjekke svarhodene i nettleser-utviklerverktøy (Nettverk-fane → klikk enhver forespørsel → Svarhodet) og bekreft at X-Content-Type-Options: nosniff er til stede.
Vanlige feil
- Sette den bare på hjemmesiden. Toppteksten må være på hvert svar — inkludert bilder, skript, stilark og opplastede filer — fordi det er ressursene sniffing påvirker. Bruk den på server- eller CDN-nivå slik at den er universell, ikke side-for-side.
- En skrivefeil i verdien. Den eneste gyldige verdien er
nosniff. Noe annet (en tom verdi, en stavefeil) feiler sjekken og gir ingen beskyttelse. Skanneren vil rapportere verdien den faktisk så slik at du kan oppdage en skrivefeil. - Anta at det erstatter en Content Security Policy. nosniff er ett lag. Det kontrollerer ikke hvilke skript som har lov til å kjøre — det er CSP sin jobb. Legg til nosniff nå som en rask gevinst, og behandle en riktig CSP som den større oppfølgingen.
- Fjerne «duplikatet». Hvis både CDN og opprinnelsen setter det, vil du se det to ganger. Det er ufarlig — ikke bruk tid på å strippe en av dem ut.
- Betale for det. Det er en gratis konfigurasjonsendring. Overvåking, revisjoner og portefølje-dashbord er legitimt betalt; å legge til én enkelt topptekst er ikke det.
Send dette til IT-personen
Den tekniske sammendraget: denne sjekken inspiserer HTTP-svarhodene og bestås når X-Content-Type-Options er til stede og verdien (case-insensitive) inneholder nosniff — inkludert flerkilde nosniff, nosniff-tilfellet der en CDN og opprinnelse begge setter den. Manglende eller annen verdi enn nosniff feiler. Det er en scoret P2-sjekk verdt 25 poeng, vurdert middels alvorlighetsgrad ved feil, og kartlegges til OWASP Top 10 A05 (Security Misconfiguration). Utbedringen er en enkelt statisk svarhodet brukt på alle svar; det er ingen parametre og ingen gyldige alternative verdier. Sett den ved kanten (CDN) for nettsteddekkende dekning, eller ved nettserveren med always-semantikk slik at den sendes på feilsvar også, og bekreft deretter i svarhodene.
FAQ
Vi lar ingen laste opp filer. Trenger vi fortsatt dette?
Ja, og det er fortsatt verdt å gjøre. Toppteksten er forsvar-i-dybden: den stopper også nettleseren fra å lese feil skript, stilark og datafiler som serveres fra din egen side, noe som beskytter mot flere cross-site-scripting-tricks selv på nettsteder uten opplastingsskjema. Det koster ingenting og bryter aldri en korrekt konfigurert side, så det er ingen grunn til å hoppe over det.
Vil det å legge dette til ødelegge noe på nettstedet?
Nesten aldri. nosniff gjør at nettlesere hedrer innholdstypen serveren allerede sender. Den eneste måten det forårsaker problemer på er hvis serveren mislabeler filer — for eksempel sender et stilark eller skript med feil type. Hvis noe går i stykker, er det en ekte feil nosniff avslørte heller enn forårsaket, og det er verdt å fikse uansett. Test én gang etter distribusjon.
Hva ser 'bra' faktisk ut som?
En enkelt svarhodet på alle sider og eiendeler: X-Content-Type-Options: nosniff. Det er hele den korrekte konfigurasjonen — det er ingen andre gyldige verdier og ingen tuning å gjøre.
CDN-en (Cloudflare eller lignende) og serveren vår legger begge til den — er det et problem?
Nei. Å se verdien to ganger ('nosniff, nosniff') fordi både CDN og opprinnelsen setter den er helt fint og bestås fortsatt. Du trenger ikke å fjerne en.
Koster det å fikse dette penger?
Nei. Fiksen er én linje med gratis konfigurasjon på nettserveren eller CDN-en. Noen som tar betalt for å legge til én enkelt topptekst overbelaster. Det eneste som er verdt å betale for i dette området er løpende overvåking, en porteføljevisning på tvers av mange nettsteder, eller en formell revisjon — ikke fiksen selv.
Hvordan er dette forskjellig fra en Content Security Policy (CSP)?
De er komplementære. CSP kontrollerer hvilke skript og ressurser som har lov til å laste i det hele tatt; nosniff stopper nettleseren fra å feilklassifisere en fil den laster. Du vil ha begge. nosniff er langt enklere og raskere å legge til, så det er et godt første steg på vei til en full CSP.