Defaults.Exposed › Opravy › Ochrana pred MIME-sniffingom (X-Content-Type-Options)
Ako opraviť Ochrana pred MIME-sniffingom (X-Content-Type-Options)
Jednoriadková hlavička, ktorá zabraňuje prehliadačom hádať, čo súbor v skutočnosti je. Bez nej môže súbor, ktorý niekto nahrá na vašu stránku — alebo súbor na vašich vlastných stránkach — prehliadač nesprávne prečítať a spustiť ako kód, čo je presne spôsob, akým niektoré útoky premenia zdanlivo nevinné nahrávanie na spôsob kradnutia relácií zákazníkov.
Podstata pre vaše podnikanie: Chýbajúca táto hlavička je jasným, skenovateľným znakom, že základy nie sú zaistené. Sama o sebe zriedkavo zhodí stránku, ale v kombinácii s formulárom na nahrávanie súborov alebo obsahom generovaným používateľmi otvára cestu útočníkovi na spúšťanie škodlivého kódu v prehliadačoch vašich návštevníkov — unesenie prihlásených relácií, krádež prihlasovacích alebo karetných údajov a vystavenie vás rozhovoru o narušení dát. Je to jedna z najlacnejších opráv v bezpečnosti: jeden riadok, zadarmo, asi päť minút.
Čo vás to môže stáť
- Každá stránka, kde môžu zákazníci alebo zamestnanci nahrávať súbory (avatary, dokumenty, prílohy podpory, fotky výpisov), sa stáva možným odrazovým mostíkom pre útoky na strane prehliadača.
- Útočník môže zamaskiť škodlivý kód ako obrázok alebo textový súbor a nechať prehliadač návštevníka ho spustiť — krádež jeho prihlásenej relácie na vašej stránke.
- Bezpečnostné dotazníky, kontroly kybernetického poistenia a podnikoví kupujúci skenujú túto hlavičku; jej neprítomnosť sa číta ako 'nerobia základy' a môže zastaviť alebo potopiť obchod.
- Staršie prehliadače a niektoré integrácie 'sniff'-ujú typy obsahu a môžu nesprávne zaobchádzať so súbormi spôsobmi, ktoré narúšajú dôveru alebo unikanejú dáta.
Prečo na tom záleží. Prehliadače, keď server je vágny o tom, čo súbor je, sa pokúsia hádať ('sniff') typ obsahu. Útočníci zneužívajú toto hádanie: nahrajú súbor, ktorý server poctivo označí ako obrázok, ale ktorého obsah spôsobí, že prehliadač rozhodne, že je to vlastne JavaScript — a spustí ho. Hlavička X-Content-Type-Options: nosniff hovorí každému prehliadaču, aby prestal hádať a dôveroval deklarovanému typu servera, čím sa uzatvára celá táto trieda triku. Je to hodnotená kontrola stojaca 25 bodov a hodnotená ako stredná závažnosť pri absencii.
Stručná verzia pre majiteľa
Do každého webového prehliadača je zabudovaný tichý predpoklad: keď stiahne súbor z vašej stránky, pokúsi sa zistiť, akého druhu súbor to je. Zvyčajne dôveruje vášmu serveru. Ale ak je váš server vágny, prehliadač bude hádať — a to hádanie sa nazýva MIME-sniffing.
Problémom je, že útočníci môžu hru manipulovať. Môžu vytvoriť súbor, ktorý váš server poctivo považuje za nevinný obrázok, ale prehliadač, ponechaný hádanie, rozhodne, že je to vlastne program kód — a potom ho spustí, priamo vo vnútri zákazníkovho prehliadača, na vašej doméne.
Existuje jednoriadková inštrukcia, ktorá vypína hádanie: X-Content-Type-Options: nosniff. Hovorí každému prehliadaču: “nehádaj — dôveruj presne tomu, čo ti hovorí môj server.” To je celá oprava. Je zadarmo, trvá asi päť minút a na správne postavnej stránke nič neporuší.
Táto kontrola hľadá túto hlavičku. Ak chýba, stratíte 25 bodov a je hodnotená ako stredne závažný problém — nie preto, že hlavička sama osebe je katastrofou, ale preto, že jej absencia je spoľahlivým znakom, že základy neboli zaistené.
Čo vás to môže stáť
-
“Nevinná príloha”, ktorá nevinná nebola. Prevádzkujete podporný portál alebo trhovisko, kde zákazníci nahrávajú súbory — príjmy, fotky, dokumenty. Útočník nahrá súbor, ktorý váš systém ukladá a poskytuje ako obrázok. Bez nosniff prehliadač obete hádame, že súbor je skutočne skript a spustí ho — ticho kradnúc prihlásená reláciu tohto návštevníka na vašej stránke. Teraz je útočník nimi: zadáva objednávky, číta správy, mení detaily.
-
Obchod, ktorý viazne na bezpečnostnom dotazníku. Väčší nákupný tím zákazníka spustí automatický sken vašej stránky pred podpisom. Chýbajúce bezpečnostné hlavičky sa okamžite zobrazia. Dokonca aj keď nebolo nič nikdy zneužité, správa hovorí “základné hlavičky webovej bezpečnosti chýbajú” a zrazu odpovedáte na otázky nápravy a posúvate dátum uzavretia o týždne — kvôli oprave, ktorá by trvala päť minút.
-
Obnova kybernetického poistenia, ktorá sa stáva ťažšou. Viac poisťovateľov teraz spúšťa externé skeny pred cenením alebo obnovením. Čistý profil hlavičiek je lacný dôkaz hygieny; chýbajúci je malá čierna škvrna, ktorá, naskladaná s inými, nakloní vašu prémiu nahor.
-
Reputačný zásah, ktorý sa ľahko neodstráni. Ak incident s unesením relácie vysleduje k súboru poskytnutému z vašej domény, príbeh nie je “chýbala nejasná hlavička” — je to “[vaša firma] unikla zákaznícke účty.” To je verzia, ktorú si zákazníci pamätajú.
Čo to v skutočnosti je
Keď prehliadač dostane súbor, server by ho mal označiť typom obsahu (napríklad, image/png pre PNG obrázok alebo text/html pre webovú stránku). Historicky prehliadače plne nedôverovali tomuto označeniu — čiastočne preto, že niektoré servery to urobili zle — takže nahliadli na skutočné bajty súboru a sami rozhodli. To nahliadnutie je MIME-sniffing.
Bola to pohodlnosť, ktorá sa stala záväzkom. Ak môže útočník dostať súbor na vašu stránku (cez formulár na nahrávanie, pole komentárov, importovaný dokument) a ovplyvniť jeho obsah, môže vytvoriť niečo, čo server nevinne označí, ale prehliadač pačichá ako spustiteľný skript. Prehliadač ho potom spustí na vašej doméne, so všetkou dôverou, ktorú vaša doména nesie.
X-Content-Type-Options: nosniff úplne odstraňuje hádanie. S jej nastavením je prehliadač povedaný: používaj deklarovaný typ servera a nič iné. Súbor označený ako obrázok je zaobchádzaný ako obrázok — dokonca aj keď jeho obsah vyzerá ako skript. Vektor útoku sa uzatvára.
Ako vyzerá ‘dobré’ nastavenie: každá odpoveď z vašej stránky — stránky a aktíva rovnako — nesie presne túto hlavičku:
X-Content-Type-Options: nosniff
Neexistuje žiadna iná platná hodnota a nie je čo ladiť. Ak vaša CDN a váš server ju oba pridajú (takže vidíte nosniff, nosniff), je to v poriadku a stále sa počíta ako priechod.
Ako to opraviť (zadarmo, ~5 minút)
Odovzdajte túto sekciu tomu, kto spravuje váš web — vášmu IT pracovníkovi, webovému vývojárovi alebo podpore hostingu. Oprava je zadarmo a rýchla; nie je nič na kúpenie. Čo žiadate, je jednoduché: “Pridajte hlavičku odpovede X-Content-Type-Options: nosniff na každú stránku a aktívum na stránke.”
Cloudflare (alebo podobná CDN/proxy) — často najrýchlejšie miesto na to, pokrývajúc celú stránku naraz:
- Použite Pravidlo transformácie hlavičky odpovede (Pravidlá → Transformovať pravidlá → Upraviť hlavičku odpovede) na nastavenie
X-Content-Type-Optionsnanosniffpre všetky prichádzajúce požiadavky.
Nginx — pridajte do príslušného bloku server (alebo location):
add_header X-Content-Type-Options "nosniff" always;
Kľúčové slovo always zabezpečí, že je odosielané aj pri chybových odpovediach. Znovu načítajte Nginx po uložení.
Apache — vyžaduje povolenie mod_headers; v konfigurácii stránky alebo .htaccess:
Header always set X-Content-Type-Options "nosniff"
IIS / Windows hosting — v web.config pod <system.webServer>:
<httpProtocol>
<customHeaders>
<add name="X-Content-Type-Options" value="nosniff" />
</customHeaders>
</httpProtocol>
Node / Express — nastavte ju pre každú odpoveď:
app.use((req, res, next) => {
res.setHeader('X-Content-Type-Options', 'nosniff');
next();
});
(Alebo použite balíček helmet, ktorý nastaví toto a niekoľko ďalších bezpečnostných hlavičiek predvolene.)
Po nasadení to overte. Znovu spustite váš sken alebo nechajte vášho vývojára skontrolovať hlavičky odpovede v nástrojoch pre vývojárov prehliadača (záložka Sieť → kliknite na akúkoľvek požiadavku → Hlavičky odpovede) a potvrďte, že X-Content-Type-Options: nosniff je prítomný.
Bežné chyby
- Nastavenie len na domovskej stránke. Hlavička musí byť na každej odpovedi — vrátane obrázkov, skriptov, štýlových listov a nahraných súborov — pretože práve tie zdroje ovplyvňuje sniffing. Aplikujte ju na úrovni servera alebo CDN, aby bola univerzálna.
- Preklep v hodnote. Jediná platná hodnota je
nosniff. Čokoľvek iné (prázdna hodnota, chybný pravopis) zlyhá v kontrole a neposkytuje žiadnu ochranu. - Predpokladanie, že nahrádza Content Security Policy. nosniff je jedna vrstva. Nekontroluje, ktoré skripty smú vôbec bežať — to je práca CSP.
- Odstraňovanie “duplikátu”. Ak vaša CDN aj pôvod nastavujú hlavičku, uvidíte ju dvakrát. To je neškodné — netráviajte čas odstraňovaním jednej.
- Platenie za to. Je to bezplatná konfiguračná zmena. Monitorovanie, audity a portfóliové panely sú legitímne platené; pridanie jednej hlavičky nie je.
FAQ
Nenecháme nikoho nahrávať súbory. Stále to potrebujeme?
Áno a stále stojí za to urobiť. Hlavička je obrana do hĺbky: tiež zabraňuje prehliadaču nesprávne čítať skripty, štýlové listy a dátové súbory poskytované z vašej vlastnej stránky, čo chráni pred niekoľkými trikmi cross-site skriptingu dokonca aj na stránkach bez formulára na nahrávanie. Nič nestojí a nikdy neporuší správne nakonfigurovanú stránku, takže nie je dôvod ju preskočiť.
Poruší pridanie tohto niečo na našej webovej stránke?
Takmer nikdy. nosniff jednoducho núti prehliadače rešpektovať typ obsahu, ktorý váš server už odosiela. Jediný spôsob, akým spôsobí problémy, je ak váš server nesprávne označuje súbory — napríklad posiela štýlový list alebo skript s nesprávnym typom. Ak sa niečo poruší, je to skutočná chyba, ktorú nosniff odhalil namiesto spôsobenia, a stojí za opravu tak či tak.
Ako vyzerá 'dobré' nastavenie?
Jedna hlavička odpovede na každej stránke a aktíve: X-Content-Type-Options: nosniff. To je celá správna konfigurácia — neexistujú žiadne iné platné hodnoty a nie je čo ladiť.
Naša CDN (Cloudflare alebo podobná) a náš server ju oba pridávajú — je to problém?
Nie. Vidieť hodnotu dvakrát ('nosniff, nosniff'), pretože ju nastavila CDN aj pôvod, je úplne v poriadku a stále prechádza. Nemusíte odstrániť žiadnu.
Stojí oprava peňazí?
Nie. Oprava je jeden riadok bezplatnej konfigurácie na vašom webovom serveri alebo CDN. Ktokoľvek, kto vám účtuje pridanie jednej hlavičky, predražuje. Jedine veci, za ktoré sa oplatí platiť v tejto oblasti, sú priebežné monitorovanie, zobrazenie portfólia naprieč mnohými stránkami alebo formálny audit — nie samotná oprava.
Čím sa to líši od Content Security Policy (CSP)?
Sú komplementárne. CSP kontroluje, ktoré skripty a zdroje smú vôbec načítavať; nosniff zabraňuje prehliadaču nesprávne klasifikovať súbor, ktorý načíta. Chcete oboje. nosniff je oveľa jednoduchší a rýchlejší na pridanie, takže je dobrým prvým krokom na ceste k plnej CSP.