# Válaszfejlécek beállítása

> A riport javítási kártyája, amely egy helyen adja a hiányzó HSTS, X-Content-Type-Options, Referrer-Policy és Cross-Origin-Opener-Policy fejléc beállítását.

A riport Javítások fülén az „Állíts be N válaszfejlécet” kártya egyetlen kódrészletben gyűjti össze azokat a biztonsági fejléceket, amelyek az oldalról hiányoznak, vagy rossz az értékük. Ez az oldal azt mutatja meg, melyik fejlécet mikor teszi bele a kártya, milyen értékkel, és hogyan állítod be platformonként.

A kártya szövege: „Ezek a biztonsági fejlécek hiányoznak, vagy rossz az értékük. Egy helyen, együtt állítod be őket.” Ha csak egy fejléc hiányzik: „Ez a biztonsági fejléc hiányzik, vagy rossz az értéke. Egy sorral beállíthatod.”

## Mikor jelenik meg a kártya

A kártya akkor jelenik meg, ha az alábbi négy teszt közül legalább egy hibás. A kártya címében szereplő szám (N) a hibás tesztek darabszáma, a kártya súlyossága a bennük lévők közül a legsúlyosabb.

| Fejléc | Értéke a kártyán | A fejléc részletes leírása |
|---|---|---|
| `Strict-Transport-Security` | `max-age=31536000` (egy év, másodpercben) | [HSTS](https://hub.hellowp.io/hu/report/biztonsag/hsts/) |
| `X-Content-Type-Options` | `nosniff` | [X-Content-Type-Options](https://hub.hellowp.io/hu/report/biztonsag/x-content-type-options/) |
| `Referrer-Policy` | `strict-origin-when-cross-origin` | [Referrer-Policy](https://hub.hellowp.io/hu/report/biztonsag/referrer-policy/) |
| `Cross-Origin-Opener-Policy` | `same-origin-allow-popups` | [Cross-Origin-Opener-Policy](https://hub.hellowp.io/hu/report/biztonsag/cross-origin-opener-policy/) |

A kódrészletben csak azok a fejlécek szerepelnek, amelyeknek a tesztje az adott oldalon hibás. Ha például csak a HSTS hiányzik, a kártya egyetlen sort ad.

Két közeli fejléc külön kártyát kap, mert nekik saját kódjuk van: a [Content-Security-Policy](https://hub.hellowp.io/hu/report/biztonsag/content-security-policy/) és a [Clickjacking-védelem](https://hub.hellowp.io/hu/report/biztonsag/clickjacking-vedelem/).

SaaS-platformokon (például webáruház- vagy weboldal-készítő szolgáltatásokon) a kártya nem jelenik meg, mert ott az oldal tulajdonosa nem éri el a szerver fejléceit.

## Hogyan mérjük

A kártya nem külön tesztet jelent: a fenti négy teszt hibájából épül. Hogy melyik teszt mikor bukik, azt az adott fejléc oldala írja le. Röviden, a kód szerint:

- **HSTS:** hibás, ha nincs `Strict-Transport-Security` fejléc, vagy a `max-age` értéke 15 768 000 másodpercnél (kb. fél év) kisebb. A kártya ennél bőkezűbb értéket ad: egy évet.
- **X-Content-Type-Options:** hibás, ha a fejléc első értéke nem `nosniff`.
- **Referrer-Policy:** hibás, ha nincs `Referrer-Policy` fejléc és nincs `<meta name="referrer">` tag sem.
- **Cross-Origin-Opener-Policy:** hibás, ha nincs ilyen fejléc.

## Hogyan javítsd

A fejléceket a szerver, a CDN vagy a WordPress adhatja hozzá. Válaszd azt a helyet, ahol az oldalad válaszát a legkorábban állíthatod, és ne add hozzá kétszer ugyanazt a fejlécet.

> **Figyelem**
>
> A HSTS fejlécet a böngésző a megadott ideig (`max-age`, másodpercben) megjegyzi: addig csak https-en keresi fel az oldalt (MDN). Mielőtt bekapcsolod, győződj meg róla, hogy az oldal minden része https-en elérhető, és az [HTTPS-átirányítás](https://hub.hellowp.io/hu/report/biztonsag/https-atiranyitas/) és a [TLS-tanúsítvány](https://hub.hellowp.io/hu/report/biztonsag/tls-tanusitvany/) rendben van.

A lenti kódrészletek mind a négy fejléc együttes beállítását mutatják; hagyd ki belőlük azokat, amelyek nem hiányoznak.

### nginx

Az nginx server blokkjába:

```nginx title="nginx"
add_header Strict-Transport-Security "max-age=31536000" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
add_header Cross-Origin-Opener-Policy "same-origin-allow-popups" always;
```

Az nginx dokumentációja szerint az `add_header` direktívák csak akkor öröklődnek az előző szintről, ha az adott szinten nincs saját `add_header`. Ezért ha egy `location` blokkban is van `add_header`, oda is be kell másolni ezeket a sorokat. Az `always` paraméter a hibaválaszokra is felteszi a fejlécet.

### Apache (.htaccess)

A webroot `.htaccess` fájljába:

```apache title=".htaccess"
<IfModule mod_headers.c>
    Header always set Strict-Transport-Security "max-age=31536000"
    Header always set X-Content-Type-Options "nosniff"
    Header always set Referrer-Policy "strict-origin-when-cross-origin"
    Header always set Cross-Origin-Opener-Policy "same-origin-allow-popups"
</IfModule>
```

Az `<IfModule>` burok miatt a sorok nem okoznak 500-as hibát, ha a `mod_headers` nincs betöltve; ilyenkor viszont a fejlécek nem is jelennek meg, ezért ellenőrizd. Az `always` az Apache dokumentációja szerint a hibaválaszokra is érvényes.

### Cloudflare

Cloudflare: Rules, Overview, Create rule, Response Header Transform Rule. Minden fejlécnek külön műveletet adj (a „Set static” a meglévő azonos nevű fejlécet felülírja):

```text title="Cloudflare"
Set static: Strict-Transport-Security = max-age=31536000
Set static: X-Content-Type-Options = nosniff
Set static: Referrer-Policy = strict-origin-when-cross-origin
Set static: Cross-Origin-Opener-Policy = same-origin-allow-popups
```

### WordPress

Új fájlba, a `wp-content/mu-plugins/` mappába (Bedrocknál `web/app/mu-plugins/`), például `valaszfejlecek.php` néven. A WordPress dokumentációja szerint a must-use bővítmények a wp-adminból nem kapcsolhatók ki, a fájlt törölve szűnik meg a hatásuk:

```php title="wp-content/mu-plugins/valaszfejlecek.php"
<?php
add_action( 'send_headers', function () {
    header( 'Strict-Transport-Security: max-age=31536000' );
    header( 'X-Content-Type-Options: nosniff' );
    header( 'Referrer-Policy: strict-origin-when-cross-origin' );
    header( 'Cross-Origin-Opener-Policy: same-origin-allow-popups' );
} );
```

## Hogyan ellenőrizd

Futtasd újra a riportot: ha a négy fejléc rendben van, a kártya eltűnik a Javítások fülről. Parancssorban:

```bash title="Terminál"
curl -sI "https://pelda.hu/?v=1" | grep -iE '^(strict-transport-security|x-content-type-options|referrer-policy|cross-origin-opener-policy):'
```

Mind a négy sort látnod kell a fenti értékekkel.
