# Biztonsági fejlécek weboldalakhoz: security header helyes beállítása

> Biztonsági fejlécek beállítása weboldalakhoz: CSP, HSTS, X-Content-Type-Options és több, Nginx- és Apache-példákkal, ellenőrzéssel és tipikus hibákkal.

Forrás: https://phpsos.de/hu/ratgeber/sicherheits-header/  
Állapot: 2026. 10. 25.  
Szolgáltató: PHP SOS, PHP-vészhelyzeti segítség és szerverbiztonság. Azonnali segítség WhatsAppon: https://wa.me/491736494914?text=%C3%9Cdv%C3%B6zl%C3%B6m%2C%20PHP%20SOS%21%20Seg%C3%ADts%C3%A9gre%20van%20sz%C3%BCks%C3%A9g%C3%BCnk%20a%20PHP-szerver%C3%BCnkkel.%20C%C3%A9g%3A%20%E2%80%A6%20Weboldal%3A%20%E2%80%A6

**Röviden:** A security headerek a webszerver utasításai a böngésző számára, amelyek a látogatókat olyan támadások ellen védik, mint a Cross-Site Scripting, a clickjacking és a titkosítatlan kapcsolatok. A legfontosabbak a HSTS, a Content-Security-Policy, az X-Content-Type-Options, az idegen keretek elleni védelem, a Referrer-Policy és a Permissions-Policy. Értelmes keményítést jelentenek, de nem pótolják a szerveren végzett frissítéseket.

## Mit tudnak a security headerek, és mit nem

Minden oldalmeghíváskor a webszerver a tartalom mellett fejléceket is küld. Ezek némelyike a böngésző biztonsági funkcióit vezérli. Így például rögzíthető, hogy egy oldalt csak HTTPS-en töltsenek be, vagy hogy a böngésző ne futtasson szkripteket idegen domainekről.

Az üzemeltetők számára a besorolás fontos: a fejlécek elsősorban a látogatókat védik, például a munkamenetek elfogásától vagy a manipulált űrlapoktól. A szerveren lévő réseket nem zárják le. A PHP-ban, a CMS-ben vagy egy bővítményben lévő sebezhetőség megmarad, bármilyen jól vannak is beállítva a fejlécek. Rendezett kóddal együtt azonban jelentősen korlátozzák sok hiba következményeit.

## A legfontosabb security headerek áttekintése

| Fejléc | Cél | Ajánlás kiindulópontként |
|---|---|---|
| Strict-Transport-Security (HSTS) | kikényszeríti a HTTPS-t a jövőbeli meghívásokhoz | `max-age=31536000; includeSubDomains` |
| Content-Security-Policy (CSP) | meghatározza a szkriptek, képek, keretek engedélyezett forrásait | egyedi, először Report-Only módban |
| X-Content-Type-Options | megakadályozza, hogy a böngésző kitalálja a fájltípusokat | `nosniff` |
| X-Frame-Options, illetve CSP frame-ancestors | megakadályozza az idegen oldalakba való beágyazást (clickjacking) | `SAMEORIGIN`, illetve `frame-ancestors 'self'` |
| Referrer-Policy | korlátozza, hogy melyik cím kerül át más oldalaknak | `strict-origin-when-cross-origin` |
| Permissions-Policy | kikapcsolja a böngészőfunkciókat, például a kamerát vagy a helyzetmeghatározást | csak a szükséges funkciókat engedélyezze |

A HSTS-t csak akkor állítsa be, ha az összes aldomain megbízhatóan elérhető HTTPS-en. A böngésző a megadott ideig megjegyzi az utasítást; egy hibát ekkor nem lehet azonnal visszavonni. Adott esetben rövid futamidővel kezdje, és sikeres tesztek után növelje. A kiegészítő `preload` opció tartósan felveszi a domaint a böngészőgyártók listáiba, és csak gondos ellenőrzés után szabad beállítani.

A fejlécek egyébként nem az egyetlen hely, ahol a böngésző védelmet kínál. A cookie-k viseljék a `Secure`, `HttpOnly` és `SameSite` attribútumokat, hogy a munkameneteket ne lehessen titkosítatlan kapcsolatokon vagy szkripteken keresztül elfogni. Hogyan állíthatja ezt be PHP-ban, azt a munkamenetekről szóló útmutató írja le.

## Security headerek beállítása Nginxben

Az Nginxben a fejlécek az adott weboldal `server` blokkjába tartoznak. Az `always` kiegészítés gondoskodik arról, hogy a hibaoldalaknál is elküldjék őket.

```nginx
server {
    # ...
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
    add_header X-Content-Type-Options "nosniff" always;
    add_header X-Frame-Options "SAMEORIGIN" always;
    add_header Referrer-Policy "strict-origin-when-cross-origin" always;
    add_header Permissions-Policy "camera=(), microphone=(), geolocation=()" always;
    add_header Content-Security-Policy-Report-Only "default-src 'self'; img-src 'self' data:; object-src 'none'; base-uri 'self'; frame-ancestors 'self'; form-action 'self'" always;

    server_tokens off;
}
```

Az Nginx egyik sajátossága: ha egy `location` blokk saját `add_header` utasításokat állít be, a `server` blokk fejléceit ott nem veszi át. Ezért az aloldalakat és a statikus fájlokat is ellenőrizze. Erről a kombinációról további keményítést ír le az [Az Nginx és a PHP-FPM biztonságos beállítása](https://phpsos.de/hu/server/nginx-php-fpm/) oldal.

## Security headerek beállítása Apache-ban

Apache alatt szüksége van a `mod_headers` modulra. Az utasítások a VirtualHostba tartoznak, vagy ha ahhoz nincs hozzáférés, a `.htaccess`-be.

```apache
<IfModule mod_headers.c>
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
    Header always set X-Content-Type-Options "nosniff"
    Header always set X-Frame-Options "SAMEORIGIN"
    Header always set Referrer-Policy "strict-origin-when-cross-origin"
    Header always set Permissions-Policy "camera=(), microphone=(), geolocation=()"
    Header always set Content-Security-Policy-Report-Only "default-src 'self'; object-src 'none'; base-uri 'self'; frame-ancestors 'self'"
</IfModule>

ServerTokens Prod
ServerSignature Off
```

A `ServerTokens` és a `ServerSignature` a fő konfigurációba tartozik. Megakadályozzák, hogy a szerver a válaszokban és a hibaoldalakon megnevezze a pontos verzióját. A `php.ini`-ben ugyanezt a PHP-nál az `expose_php = Off` értékkel éri el.

## A Content Security Policy fokozatos bevezetése

A Content Security Policy a leghatékonyabb, de egyben a legigényesebb fejléc. Meghatározza, mely forrásokból tölthetők be szkriptek, stíluslapok, képek, betűtípusok és keretek. Ha egy bejuttatott szkriptet idegen domainről töltenek utána, a böngésző blokkolja.

A modern weboldalak gyakran elemző eszközöket, fizetési szolgáltatókat, térképszolgáltatásokat vagy videókat ágyaznak be. Egy túl szigorú irányelv ekkor funkciókat bénít meg. Ezért lépésekben járjon el:

- Először a `Content-Security-Policy-Report-Only`-val kezdjen. A böngésző a szabálysértéseket a fejlesztői konzolban vagy egy gyűjtőcímre jelenti, de nem blokkol semmit.
- Mérje fel az összes szükséges forrást, és célzottan engedélyezze őket, általános helyettesítők használata helyett.
- A beágyazott szkripteket fokozatosan szervezze ki fájlokba, vagy lássa el nonce-okkal, hogy az `'unsafe-inline'` mellőzhető legyen.
- Csak egy váratlan üzenetek nélküli tesztidőszak után váltson át `Content-Security-Policy`-ra.

> **Tipp:**
> A CSP kiegészíti a kódban lévő szabályos escape-elést, de nem pótolja. Hogyan védheti helyesen a kimeneteket PHP-ban, azt a [A Cross-Site Scripting megelőzése PHP-ban](https://phpsos.de/hu/ratgeber/xss-php/) útmutató írja le.

## A fejlécek ellenőrzése és a tipikus hibák elkerülése

Minden módosítás után ellenőrizze, hogy a fejlécek ténylegesen megérkeznek-e. Ez további eszközök nélkül is megy a `curl`-lel:

```bash
# A konfiguráció tesztelése és újratöltése
nginx -t && systemctl reload nginx

# A nyitóoldal és egy statikus fájl fejléceinek megjelenítése
curl -sI https://www.example.de/ | grep -iE 'strict|content-security|x-content|x-frame|referrer|permissions|server'
curl -sI https://www.example.de/favicon.ico | grep -iE 'strict|x-content'
```

Tipikus hibák: kétszer beállított fejlécek, ha a webszerver és az alkalmazás ugyanazokat a fejléceket küldi; egy előtte álló CDN, amely eltávolítja vagy felülírja a fejléceket; és olyan fejlécek, amelyek csak a nyitóoldalon jelennek meg, az átirányításoknál vagy a hibaoldalakon azonban nem. Ellenőrizze emellett a CMS vagy a biztonsági bővítmények frissítései után, hogy megváltoztak-e a fejlécek.

Rögzítse ezért azt az egy helyet, ahol a fejléceket gondozzák, a legjobb a webszerver vagy az előtte álló szolgáltatás. Sok CMS-bővítmény szintén kínál beállításokat a biztonsági fejlécekhez. Ez kényelmes, de könnyen vezet kétszeres vagy ellentmondó adatokhoz, ha emellett a szerver is állít be fejléceket. Egyes tesztekhez a böngésző fejlesztői eszközei is megfelelnek: a hálózat fülön minden kéréshez látja a válaszfejléceket, a konzol pedig kijelzi a Content Security Policy megsértéseit.

## Hogyan segít konkrétan a PHP SOS?

- Ellenőrizzük az összes weboldala aktuális fejléceit, a CDN és a proxy mögött is, és rámutatunk a hiányosságokra és az ellentmondásokra.
- A fejléceket a [szerver-keményítés](https://phpsos.de/hu/leistungen/server-haertung/) keretében központilag a webszerverben állítjuk be, és teszteljük a nyitóoldalt, az aloldalakat és a hibaoldalakat.
- A Content Security Policyt Report-Only módban vezetjük be, kiértékeljük az üzeneteket, és egyeztetés után élesítjük.
- Ahol a kódmódosítás nem lehetséges azonnal, a védelmet [WAF-szabályokkal és virtuális javítással](https://phpsos.de/hu/leistungen/waf-virtuelles-patching/) egészítjük ki.


## Gyakori kérdések

**Mik azok a security headerek?**  
A security headerek a webszerver válaszában lévő kiegészítő adatok. Megmondják a böngészőnek például, hogy az oldalt csak HTTPS-en töltse be, ne futtasson idegen szkripteket, vagy ne jelenítse meg az oldalt idegen keretben. Elsősorban a látogatókat védik.

**Védenek a security headerek a PHP2Shell ellen?**  
Nem. A PHP2Shell egy rés a szerveren lévő PHP-ban, a fejlécek a látogató böngészőjében hatnak. A PHP2Shell ellen a javított PHP-verzióra való frissítés és az összes worker újraindítása segít. A fejlécek más támadástípusok elleni kiegészítő keményítést jelentenek.

**Tönkreteheti a weboldalamat egy Content Security Policy?**  
Igen, egy túl szigorú irányelv blokkolja a szükséges szkripteket, betűtípusokat vagy beágyazott tartalmakat. Ezért először Report-Only módban vezetik be, kiértékelik az üzeneteket, és csak azután kapcsolnak át érvényesítésre.

**Van még értelme az X-XSS-Protection-nek?**  
Nem. Az aktuális böngészők már nem értékelik ezt a fejlécet, és az ajánlás szerint el kell hagyni, vagy 0-ra kell állítani. A Cross-Site Scripting elleni védelmet a kódban lévő szabályos escape-elés és egy Content Security Policy nyújtja.

## Források

- [OWASP Cheat Sheet Series (HTTP Headers)](https://cheatsheetseries.owasp.org/)
- [OWASP Top 10](https://owasp.org/www-project-top-ten/)
- [BSI: ajánlások webszerverekhez (a német Szövetségi Információbiztonsági Hivatal)](https://www.bsi.bund.de/)
