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.
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
- Ha Apache fut, szerkeszd a gyökér
.htaccess fájlt.
- Illeszd be a négy
Header always set sort egy IfModule mod_headers.c blokkba.
- Nginx esetén a szerverblokkba kerülnek
add_header sorok, ehhez tárhely-hozzáférés kell.
- Plugin is megoldja, ha nincs szerver-hozzáférésed, de akkor ellenőrizd a duplikációt.
- 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
- A fejléceket a webszerver vagy a reverse proxy konfigurációjában állítsd be, ne az alkalmazáskódban.
- Tedd verziókezelt fájlba, hogy a deploy ne írja felül.
- Kezdd a négy alapfejléccel, utána jöhet a CSP (Content-Security-Policy) Report-Only módban.
- Ha minden aldomain HTTPS-en fut, kapcsold be a HSTS-t is.
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.