X-Content-Type-Options
A teszt azt nézi, hogy az oldal X-Content-Type-Options: nosniff fejlécet küld-e, amely megtiltja a böngészőnek a tartalomtípus kitalálását.
Ha egy szerver nem, vagy rosszul adja meg egy fájl típusát, a böngésző megpróbálja kitalálni a tartalmából (MIME-szippantás, „sniffing”). Ez kihasználható: egy szövegként kiszolgált, de HTML-t tartalmazó (például felhasználó által feltöltött) fájlt a böngésző HTML-ként is értelmezhet, és ezzel XSS-támadás válik lehetővé. Az X-Content-Type-Options: nosniff fejléc megtiltja ezt. A riportban a teszt súlyossága alacsony.
Hogyan mérjük
Szekció neve “Hogyan mérjük”A riport a főoldal válaszfejlécét nézi (átirányítások követése után a végső válaszét).
- Megfelelő: az
X-Content-Type-Optionsfejléc értéke (kis- és nagybetűtől függetlenül, a szóközöket levágva)nosniff. Ha a fejléc vesszővel elválasztott több értéket tartalmaz, az első számít. - Hiba: nincs a fejléc, vagy az első értéke nem
nosniff.
A teszt csak a főoldal válaszát nézi, a többi fájl (kép, szkript, stílus) fejlécét nem.
Hogyan javítsd
Szekció neve “Hogyan javítsd”Az MDN szerint a nosniff két dolgot csinál. Ha a kérés szkript vagy stílus, a böngésző blokkolja a választ, ha a típusa nem JavaScript-típus, illetve nem text/css. Minden más válasznál a megadott Content-Type-ot használja kitalálás helyett. A fejléc bekapcsolása előtt ezért győződj meg róla, hogy a szerver minden fájlt helyes Content-Type-pal ad ki, különben egy rosszul kiszolgált szkript vagy stílus nem fog betöltődni.
A riport kártyája az alábbi fejlécet adja. Az alábbi kódok a fejlécet egyedül állítják be; ha a riport több hiányzó fejlécet jelez, ugyanabba a blokkba kerülhet mindegyik.
nginx
Szekció neve “nginx”Az nginx server blokkjába. Ha egy location blokkban is van add_header, oda is be kell írni, mert az nginx csak akkor örökli a fejlécet, ha az adott szinten nincs add_header.
add_header X-Content-Type-Options "nosniff" always;Apache (.htaccess)
Szekció neve “Apache (.htaccess)”<IfModule mod_headers.c> Header always set X-Content-Type-Options "nosniff"</IfModule>Cloudflare
Szekció neve “Cloudflare”Rules → Overview → Create rule → Response Header Transform Rule:
Set static: X-Content-Type-Options = nosniffA Cloudflare dokumentációja szerint az SSL/TLS → Edge Certificates HSTS-beállításai között külön „No-Sniff Header” kapcsoló is van, amely ugyanezt a fejlécet küldi.
WordPress
Szekció neve “WordPress”Új fájlba: wp-content/mu-plugins/biztonsagi-fejlecek.php (Bedrockon: web/app/mu-plugins/biztonsagi-fejlecek.php):
<?phpadd_action( 'send_headers', function () { header( 'X-Content-Type-Options: nosniff' );} );Hogyan ellenőrizd
Szekció neve “Hogyan ellenőrizd”Futtasd újra a riportot. Parancssorból:
curl -sI https://example.com/ | grep -i x-content-type-optionsA kimenet: x-content-type-options: nosniff. Nyisd meg az oldalt böngészőben is, és nézd meg a fejlesztői eszközök konzolját: ha egy szkript vagy stílus típusa nem stimmel, a böngésző itt hibaüzenetet ír.
Készült: