Defaults.Exposed

Defaults.ExposedFikser › 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

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.

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:

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

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.