MIME-sniffing je proces, při kterém prohlížeč určuje typ obsahu souboru (MIME typ) na základě jeho skutečného obsahu, nikoli na základě deklarovaného MIME typu v HTTP hlavičce. Tento mechanismus je běžně využíván, aby prohlížeč zvládl situace, kdy server nesprávně uvede MIME typ nebo jej vůbec nespecifikuje.
Jak MIME-sniffing funguje?
Když prohlížeč obdrží odpověď od serveru, může:
- Číst první bajty obsahu (tzv. „content sniffing“) a na jejich základě určit, co je obsahem souboru (např. obrázek, text, video)
- Porovnat tyto informace s deklarovaným MIME typem (pokud je uveden)
Proč představuje MIME-sniffing bezpečnostní riziko?
Kvůli MIME-sniffingu se můžeme setkat s XSS, který si vysvětlíme níže:
- XSS (Cross-Site Scripting)
Příklad útoku
- Server vrátí soubor s názvem malicious.jpg, ale MIME typ je deklarován jako text/html
- Prohlížeč spustí HTML, nebo JavaScript obsažený v souboru malicious.jpg, čímž umožní útok
Jak svůj web ochránit?
Řešení je zcela jednoduché. Stačí u hlavičky X-Content-Type-Options nastavit možnost nosniff, která prohlížeči zakáže provádět MIME-sniffing.
Ve WordPressu lze pro nastavení bezpečnostních hlaviček použít například plugin „HTTP Headers„, který mohu vřele doporučit. Kromě toho doporučuji nastavit také ostatní bezpečnostní hlavičky vašeho webu, jako jsou například:
- X-Frame-Options
- Referrer-Policy
- Permissions-Policy
- Strict-Transport-Security
- Content-Security-Policy
Díky tomu bude váš web lépe zabezpečený.
Změny si můžete ověřit například na webových stránkách www.securityheaders.com.
« Zpět do slovníku