Biztonság Szakszó

Biztonsági HTTP-fejlécek

Szerző: · 6 perc olvasás · Frissítve:
Biztonsági HTTP-fejlécek - Biztonság (szakszó) a tudástárban
Biztonsági HTTP-fejlécek - Biztonság | eClick GEO-audit tudástár

A biztonsági HTTP-fejlécek olyan válaszfejlécek, amelyeket a webszerver minden oldalletöltéskor visszaküld, és amelyekkel megmondod a böngészőnek, mit szabad az oldaladdal csinálni. Nem a tartalomról szólnak, hanem a keretről: beágyazhatóságról, fájltípus-kezelésről, hivatkozó-adatok továbbításáról, böngészőfunkciók engedélyezéséről.

Hogyan működik

A fejléc egy Név: érték pár a HTTP-válasz fejében. A böngésző beolvassa, és kényszeríti ki a szabályt. A szerver csak javasol, a végrehajtás a kliensnél történik. Ezért egy régi böngésző egyszerűen figyelmen kívül hagyja, amit nem ismer.

A napi gyakorlatban négy fejléc adja az alapkészletet:

Ezek mellett két nagyobb kaliberű fejléc van. A HSTS (HTTP Strict Transport Security) a HTTPS-t teszi kötelezővé, a CSP (Content-Security-Policy) pedig azt szabályozza, honnan tölthet be szkriptet vagy stílust az oldal.

Miért nem tartalomkérdés

A fejlécek a szerveren dőlnek el, nem a sablonban. Ugyanaz a fejléckészlet vonatkozik a nyitóoldalra, a blogcikkre és a képfájlra is. Ez jó hír: egy helyen javítod, mindenhol hat. Ugyanez a rossz hír is, mert egy elrontott érték az egész oldalt megbénítja.

Mikor számít igazán

Ahol bejelentkezés, kosár vagy űrlap van, ott a hiányzó fejlécek valódi támadási felületet nyitnak. Egy statikus bemutatkozó oldalnál a kockázat kisebb, de a beállítás akkor is öt perc. A biztonsági állapot megítélésében ez az első, amit egy külső vizsgáló megnéz, mert kívülről, bejelentkezés nélkül mérhető.

Röviden: a biztonsági fejlécek a böngészőnek szóló házirendek, amelyeket a szerveren állítasz be egyszer, és minden oldalra hatnak.

Miért fontos

Biztonsági következmény

A hiányzó X-Frame-Options miatt az oldalad átlátszó iframe-be tehető. A látogató azt hiszi, egy hirdetésre kattint, közben a te gombodat nyomja meg. Ez a clickjacking, és bejelentkezett felhasználónál tényleges kárt okoz.

A nosniff hiánya feltöltött fájloknál veszélyes. Ha a böngésző egy feltöltött képet szkriptként értelmez, lefuttatja. Webshopoknál és fórumoknál ez a leggyakoribb belépési pont.

Üzleti és SEO-hatás

A fejlécek nem rangsorolási tényezők. A közvetett hatás viszont mérhető: egy sikeres feltörés után spam-oldalak kerülnek az indexbe, és az organikus forgalom hetek alatt elfogy. A helyreállítás nagyságrendekkel drágább, mint négy fejléc beállítása.

A Referrer-Policy ezen felül adatvédelmi kérdés. Alapértelmezés nélkül a teljes URL átmegy a külső oldalaknak, beleértve a belső keresési paramétereket is.

Kikre vonatkozik

Kire vonatkozik

  • Minden publikus weboldalra, oldaltípustól függetlenül
  • Kiemelten webshopokra, ahol kosár, fiók és fizetés van
  • Bejelentkezést, űrlapot vagy fájlfeltöltést kezelő oldalakra
  • Admin-felületekre és ügyfélportálokra

Ahol a szigor árt

Egy iframe-be szánt tartalomnál, például beágyazott foglalási modulnál, a teljes tiltás elrontja a működést. Ilyenkor nem elhagyni kell a fejlécet, hanem a frame-ancestors direktívával engedélyezni a konkrét domaint.

Staging- és tesztkörnyezetben nyugodtan lazíthatsz, de a beállítás akkor is kerüljön be a verziókezelt konfigurációba. A magyar KKV-oldalak többségén azért marad el a javítás, mert a fejlécek a tárhelyen élnek, a fejlesztő pedig csak a kódhoz fér hozzá.

Hogyan ellenőrzöd

Lépések

  1. Nyisd meg az oldalt böngészőben, majd a devtools Network fülét.
  2. Frissíts, és kattints a legfelső dokumentum-kérésre.
  3. A Headers fülön görgess a Response Headers szakaszhoz.
  4. Keresd a négy fejlécnevet: X-Frame-Options, X-Content-Type-Options, Referrer-Policy, Permissions-Policy.
  5. Ellenőrizd parancssorból is: curl -sI https://pelda.hu.
  6. Nézd meg egy aloldalon és egy képfájlon is, mert a beállítás nem mindig globális.

Jó jel

  • Mind a négy fejléc szerepel a válaszban
  • X-Content-Type-Options: nosniff pontosan így, kiegészítés nélkül
  • X-Frame-Options: SAMEORIGIN vagy DENY
  • Ugyanazok a fejlécek jelennek meg az aloldalakon is

Rossz jel

  • A fejlécek csak a nyitóoldalon vannak beállítva
  • Ugyanaz a fejléc kétszer szerepel, eltérő értékkel
  • Referrer-Policy: unsafe-url vagy teljesen hiányzó érték
  • A fejléc HTML meta tagben szerepel, nem HTTP-válaszban

Mit néz ebből a riport

Az audit a nyitóoldal HTTP-válaszfejlécét olvassa, és azt jelzi, ha az alap négyesből hiányzik valamelyik. A szabály hatása alacsony, a hatóköre környezet és hoszting, mert a javítás a szerveren történik. A riportokban ezt látjuk a leggyakrabban teljesen üresen a kisebb oldalaknál.

Hogyan javítod

A riport ajánlása egyszerű: add hozzá az X-Frame-Options, X-Content-Type-Options, Referrer-Policy és Permissions-Policy fejléceket.

WordPress

  1. Ha Apache fut, szerkeszd a gyökér .htaccess fájlt.
  2. Illeszd be a négy Header always set sort egy IfModule mod_headers.c blokkba.
  3. Nginx esetén a szerverblokkba kerülnek add_header sorok, ehhez tárhely-hozzáférés kell.
  4. Plugin is megoldja, ha nincs szerver-hozzáférésed, de akkor ellenőrizd a duplikációt.
  5. Ments, majd curl -sI paranccsal nézd meg az eredményt.

Shopify

A platform maga adja a fejlécek nagy részét, és nem engedi átírni őket. Ellenőrizd, mi jön alapból, és a hiányzó részt az alkalmazás-proxy vagy egy előtétként működő szolgáltatás oldalán pótold.

Unas

A fejléceket a rendszer kezeli, a sablonfájlokban nem tudod beállítani. Nyiss ügyfélszolgálati jegyet, és kérd a négy fejléc bekapcsolását. Ha saját domainen CDN van előtte, ott is beállíthatod.

Shoprenter

Ugyanez a helyzet: a szerverkonfiguráció nem szerkeszthető a felületről. A támogatás tud globális fejléceket állítani, ezt kérd írásban, a pontos értékekkel együtt.

Egyedi fejlesztés

  1. A fejléceket a webszerver vagy a reverse proxy konfigurációjában állítsd be, ne az alkalmazáskódban.
  2. Tedd verziókezelt fájlba, hogy a deploy ne írja felül.
  3. Kezdd a négy alapfejléccel, utána jöhet a CSP (Content-Security-Policy) Report-Only módban.
  4. Ha minden aldomain HTTPS-en fut, kapcsold be a HSTS-t is.

Gyakori hibák

  • Csak a nyitóoldalon vannak beállítva: a támadás jellemzően aloldalon vagy feltöltött fájlon indul, nem a főoldalon.
  • Meta tagbe írt fejléc: az X-Frame-Options HTML-ben nem működik, csak HTTP-válaszban érvényes.
  • Duplikált fejlécek: a szerver és egy plugin is beállítja, a böngésző pedig kiszámíthatatlanul viselkedik.
  • Elgépelt érték: a nosniff helyett írt no-sniff csendben hatástalan, hibaüzenet nélkül.
  • Túl szigorú CSP élesben: azonnal kikapcsolja az analitikát és a beágyazott videókat, ezért utána mindenki letiltja az egészet.
  • HSTS HTTPS nélkül: ha nem minden aldomain érhető el TLS-sel, az oldal egy része elérhetetlenné válik.
  • Deploy felülírja a konfigurációt: a kézzel szerkesztett fájl a következő frissítéskor eltűnik.

Technikai példa

Ellenőrzés parancssorból:

curl -sI https://pelda.hu | grep -i -E "x-frame|content-type-options|referrer|permissions"

A válaszban ezeket a sorokat szeretnéd látni:

X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Referrer-Policy: strict-origin-when-cross-origin
Permissions-Policy: camera=(), microphone=(), geolocation=()

Apache alatt, a gyökér .htaccess fájlban:

<IfModule mod_headers.c>
  Header always set X-Frame-Options "SAMEORIGIN"
  Header always set X-Content-Type-Options "nosniff"
  Header always set Referrer-Policy "strict-origin-when-cross-origin"
  Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"
</IfModule>

Az always kulcsszó fontos. Nélküle a hibaoldalak, például a 404-es válaszok, fejléc nélkül mennek ki.

Gyakori kérdések

Rontja a SEO-t, ha hiányoznak ezek a fejlécek?
Közvetlenül nem. A Google nem rangsorol a biztonsági fejlécek alapján, és a hiányuk miatt nem esel vissza a találati listán. A közvetett kockázat viszont valódi: a védtelen oldalakat gyakrabban törik fel, a feltörés után pedig spam-oldalak kerülnek az indexbe.
Elég, ha egy plugin beállítja őket?
Működik, ha nincs szerver-hozzáférésed. Két dologra figyelj: a plugin csak a PHP által kiszolgált oldalakra tesz fejlécet, a statikus fájlokra nem, és könnyen duplikációt okoz. Deploy után mindig ellenőrizd curl paranccsal, mi megy ki valójában.
Mi a különbség az X-Frame-Options és a CSP között?
Az X-Frame-Options egyetlen kérdésre válaszol: beágyazható-e az oldal iframe-be. A CSP ennél sokkal tágabb, és a frame-ancestors direktívával ugyanezt is kezeli, ráadásul pontosabban. Modern böngészőben a CSP az erősebb, de a régi fejléc megtartása nem árt.
Miért nem kapcsolom be rögtön a HSTS-t?
Mert nehezen visszafordítható. Ha bekapcsolod, a böngésző hónapokig kizárólag HTTPS-en próbálja elérni a domaint. Ha közben egy aloldal vagy aldomain nem tud TLS-t, az elérhetetlenné válik. Előbb ellenőrizd a teljes tanúsítvány-lefedettséget, és rövid max-age értékkel indulj.

Források

Kapcsolódó fogalmak

A te oldaladon hogy áll a(z) „Biztonsági HTTP-fejlécek”?

Futtass egy SEO-auditot: pontszám, fejlesztői ítélet, a leggyorsabb javítások, és minden tételhez bizonyíték.

Ingyenes SEO-audit indítása