# A vezérlőpult és a Child-webhelyek kapcsolatának biztonsága

> Hogyan védi a MainWP a kapcsolatot: jelszavas hitelesítés, egyedi biztonsági azonosító, időtúllépés, kulcspár, kérések aláírása, HTTPS és a paraméterek escape-elése.

A MainWP hitelesíti a webhelykapcsolatokat, és a csatlakozás után a vezérlőpult aláírja a Child-webhelyeknek küldött kéréseket. A kérések és válaszok titkosításához használj HTTPS-es címeket a Child-webhelyeknél.

## A kezdeti kapcsolat védelme

A MainWP Child legalább egy kezdeti hitelesítési módszert megkövetel: **jelszavas hitelesítést**, **egyedi biztonsági azonosítót**, vagy mindkettőt. A MainWP Child beállításaiban nem kapcsolhatod ki mindkettőt.

### Jelszavas hitelesítés

A MainWP a WordPress-rendszergazda jelszavát használja a kezdeti ellenőrzéshez. Alapértelmezetten be van kapcsolva, és biztosítja, hogy csak ellenőrzött rendszergazda hagyhassa jóvá a kapcsolatot. Csak akkor kapcsolható ki, ha az egyedi biztonsági azonosító be van kapcsolva.

| Szempont | Részlet |
|---|---|
| Használat | Csak a kezdeti beállításkor történő ellenőrzéshez |
| Tárolás | A jelszót a vezérlőpult nem tárolja, és nem küldi a MainWP.com-ra |
| Csatlakozás után | Webhelyenkénti kulcspár hitelesíti a további kéréseket |
| Felhasználónkénti beállítás | Minden rendszergazda a saját jelszavas hitelesítését szabályozza |
| Feltétel | Ha a jelszavas hitelesítés ki van kapcsolva, az egyedi biztonsági azonosítónak be kell lennie kapcsolva |

Érdemes külön „MainWP Admin” fiókot létrehozni a webhelyek csatlakoztatásához, amelyet önállóan figyelhetsz vagy módosíthatsz.

### Egyedi biztonsági azonosító

Az egyedi biztonsági azonosító a jelszavas hitelesítés alternatívája vagy kiegészítő ellenőrzése a beállításkor. Ha be van kapcsolva, az azonosítónak egyeznie kell a vezérlőpulton és a Child-webhelyen, különben a kapcsolat nem jön létre. Csak akkor választható, ha a jelszavas hitelesítés be van kapcsolva; ha az ki van kapcsolva, az azonosító kötelező.

### Csatlakozási időkorlát

A MainWP Child bővítmény bekapcsolás után automatikusan kikapcsolja magát, ha a megadott időn belül (percben) nem jön létre kapcsolat. Ez csökkenti a kitettséget, mert a használaton kívüli bővítmény nem marad elérhető.

### A webhely leválasztása

A **Webhely leválasztása** funkcióval a vezérlőpultról törölheted egy Child-webhely összes kapcsolati adatát. Használd, ha:

- megszüntetsz egy webhelyet;
- újra szeretnéd építeni a biztonságos kapcsolatot;
- a beállítási hibákat hárítod el.

## Védelem a csatlakozás után

A webhely hozzáadása után a vezérlőpult a webhely titkos kulcsával írja alá a kéréseket. A MainWP Child a csatlakozáskor mentett nyilvános kulccsal ellenőrzi az aláírást.

### Kulcspár létrehozása

Az alapértelmezett OpenSSL-módszerrel a vezérlőpult az első csatlakozáskor hoz létre kulcspárt:

1. A vezérlőpult 2048 bites RSA nyilvános és titkos kulcspárt generál az `openssl_pkey_new()` függvénnyel.
2. A nyilvános kulcsot a Child-webhely és a vezérlőpult is menti.
3. A titkos kulcs titkosítva, csak a vezérlőpulton van tárolva.

Az 5.3 előtt létrehozott kapcsolatoknál végezd el a titkos kulcs titkosítását, ha még nem tetted. A PHPSecLib alternatíva a kulcsgenerálásra és az aláírásra; az általános vagy webhelyenkénti kapcsolati beállításoknál választható.

### Kérések aláírása és ellenőrzése

Az OpenSSL alapértelmezetten SHA-256-tal ír alá.

| Lépés | Függvény | Leírás |
|---|---|---|
| Aláírás | `openssl_sign()` | A vezérlőpult a titkos kulccsal kriptográfiai aláírást készít |
| Ellenőrzés | `openssl_verify()` | A Child-webhely a nyilvános kulccsal ellenőrzi az aláírást |

A Child-webhely csak azokat a kéréseket dolgozza fel, amelyeknek érvényes, a tárolt nyilvános kulccsal egyező aláírásuk van.

### HTTPS-titkosítás és tanúsítvány-ellenőrzés

A HTTPS titkosítja a kérések és válaszok tartalmát. Az aláírás hitelesíti a kérést, de a HTTP-kapcsolatot nem titkosítja, ezért a csatlakoztatott Child-webhelyekhez használj HTTPS-címeket. Az SSL-tanúsítvány ellenőrzése alapértelmezetten be van kapcsolva, és állítható globálisan vagy webhelyenként. Tartsd bekapcsolva, hogy a Child-webhely tanúsítványa ellenőrizve legyen.

## A kérések felépítése

A vezérlőpult cURL-lel küld kéréseket a Child-webhely beállított címére. A kérések tartalma:

| Paraméter | Célja |
|---|---|
| Felhasználónév | A kapcsolat létrehozásához használt rendszergazda felhasználóneve |
| Függvény | A Child-webhelyen futtatandó függvény neve |
| MainWP-aláírás | A kérés ellenőrzéséhez használt hitelesítő aláírás |

### Példa szinkronizálási kérésre

```
https://childsite.com/wp-admin/admin-ajax.php?user=demouser&function=stats&mainwpsignature=<aláírás>
```

Ha a `mainwpsignature` nem egyezik, a Child-webhely elutasítja a kérést.

## A kérések paramétereinek escape-elése

Mielőtt bármilyen kérést elküldene egy Child-webhelynek, a vezérlőpult escape-eli az összes paraméterértéket, hogy megakadályozza a kódbeszúrást. Például a **Ugrás a WP-adminra** funkció a `name` és `value` attribútumokat az `esc_attr()` függvénnyel escape-eli.

### Miért fontos

Ez a védelem olyan helyzetekben segít, amikor a támadó:

1. rávenne egy kézzel összeállított hivatkozás megnyitására;
2. rosszindulatú kódot próbálna átadni a kérésparaméterekben.

Mivel a MainWP minden attribútumot escape-el, a potenciálisan veszélyes kód ártalmatlanná válik, mielőtt eljutna a Child-webhelyig.

## A teljes kéréssor

1. **Előkészítés:** a vezérlőpult escape-eli az összes kérésattribútumot.
2. **Továbbítás:** a HTTPS-kérés megy a MainWP-aláírással és a paraméterekkel.
3. **Ellenőrzés:** a Child-webhely a tárolt nyilvános kulccsal ellenőrzi az aláírást.
4. **Végrehajtás:** csak a hitelesített kérések kerülnek feldolgozásra.
