# CAPTCHA

> A CAPTCHA beállítása a bejelentkezési, regisztrációs, jelszó-visszaállítási és hozzászólás-űrlapokhoz, valamint a saját bővítmények bekötése.

A CAPTCHA megakadályozza, hogy automata programok (botok) visszaéljenek a WordPress bejelentkezési, regisztrációs, jelszó-visszaállítási és hozzászólási űrlapjaival. A bővítmény Pro változata beépítve támogat több szolgáltatót, és a natív WordPress-űrlapokon automatikusan működik.

## Támogatott szolgáltatók

- **Google reCAPTCHA**: v2 (jelölőnégyzetes), v2 láthatatlan és v3 (pontszám alapú) típussal. A felhasználó viselkedéséből dönti el, hogy ember-e, kevés beavatkozással.
- **hCaptcha**: adatvédelemre helyezett alternatíva hasonló feladvánnyal.
- **Cloudflare Turnstile**: könnyű megoldás, amely a felhasználótól nem kér feladatmegoldást, a háttérben ellenőriz.

Ezek eltérő mértékben kérnek beavatkozást, és eltérő az adatvédelmi hátterük, így a webhelyed igényeihez választhatsz.

## Beállítás

A modul a **Biztonság → Beállítások → Features → Firewall** fülön a **CAPTCHA** kapcsolóval kapcsolható be. Bekapcsolás után a **CAPTCHA Settings** blokkban találod a beállításokat.

![A CAPTCHA beállításai](./kepek/bejelentkezes-vedelem-captcha.webp)

*A CAPTCHA beállításai* (https://minta-bolt.hu/wp-admin/admin.php?page=itsec&path=%2Fsettings%2Fconfigure%2Flockout)

A képen a lenyitott **CAPTCHA Settings** blokk látható: a szolgáltató, az API-kulcsok, a védett műveletek, a megjelenés és a zárolás.

| Beállítás | Mit csinál |
| --- | --- |
| **Szolgáltató** | **Google**, **Cloudflare** vagy **hCaptcha**. |
| **API-kulcsok** | Mindegyik szolgáltatótól a **Webhelykulcs** és a **Titkos kulcs** kell, amelyet a szolgáltató vezérlőpultján hozol létre; a mezők mellett a szolgáltatóra mutató hivatkozások segítenek. Google esetén a **Típus** listában (reCAPTCHA v2, láthatatlan reCAPTCHA vagy reCAPTCHA v3) azt válaszd, amelyikhez a kulcsokat létrehoztad. |
| **Védett műveletek** | **Használat bejelentkezéskor**, **Használat új felhasználó regisztrációjakor**, **Használat jelszó-visszaállításkor**, **Használat hozzászólásoknál**. |
| **Szkript beillesztése** | Hol töltse be a reCAPTCHA-szkriptet: alapérték **Csak a szükséges oldalakon**. |
| **Nyelv kényszerítése** | A CAPTCHA felületének nyelve; alapérték **Felismerés** (a böngésző nyelve alapján). |
| **GDPR-hozzájárulás bekapcsolása** | A CAPTCHA betöltése előtt hozzájárulást kérő jelölőnégyzetet jelenít meg az adatvédelmi előírások miatt. Bekapcsolva megjelenik az **Oldalon belüli hozzájárulás**: a hozzájárulás az oldalon belül, azonnal elfogadható. |
| **Blokkolási küszöbérték** | reCAPTCHA v3-nál az a 0 és 1 közötti pontszám, amely alatt a kérést botnak tekinti. Alapérték 0,5. |
| **Zárolási hibaküszöb** | A sikertelen CAPTCHA-bevitelek száma, amely zárolást vált ki. Alapérték 7; 0-nál csak naplóz, zárolás nélkül (tesztelésre és hibakeresésre jó). |
| **Zárolási ellenőrzési időszak** | Meddig számít bele a hibás CAPTCHA a zárolásba. |

## Zárolás feloldása

Ha egy jogos felhasználót kizárt a sikertelen CAPTCHA-kísérlet, és a zárolás még él, feloldhatod a vezérlőpult **Active Lockouts** kártyáján, vagy a tűzfal IP-kezelésében. A zárolások kezeléséről a [Hibaelhárítás](https://hub.hellowp.io/hu/plugins/ithemes-security-pro/hibaelharitas/) és a [Gyakori kérdések](https://hub.hellowp.io/hu/plugins/ithemes-security-pro/elso-lepesek-gyik/) fejezet is szól.

## Ajánlott gyakorlat

- Kapcsold be a CAPTCHA-t minden nyilvános űrlapon, hogy csökkentsd az automatizált támadásokat.
- Figyeld a zárolásokat, hogy észrevedd a visszaélést vagy a hibás beállítást.
- Ha a helyi adatvédelmi szabályok megkövetelik, használd a GDPR-hozzájárulást.
- Próbáld ki a CAPTCHA-t különböző böngészőkben és eszközökön, hogy mindenkinek elérhető legyen.

## Harmadik fél bővítményeinek bekötése (fejlesztőknek)

A natív WordPress-űrlapokat a bővítmény automatikusan védi. Saját vagy harmadik féltől származó űrlapokhoz a fejlesztő a bővítmény függvényeivel kötheti be a reCAPTCHA-t: megjeleníti a mezőt az űrlapon, majd az űrlap feldolgozásakor ellenőrzi a választ.

A bővítmény az `itsec_recaptcha_api_ready` műveletet (hook) indítja, amikor a bővítményeknek ideje beállítani a reCAPTCHA-integrációjukat. Ekkor a bővítmény már ellenőrizte, hogy az adminisztrátor megadta a hozzáférési kulcsokat. A hozzáférhetőséget az `ITSEC_Recaptcha_API::is_available()` hívással is ellenőrizheted. Ez a WordPress `init` műveletén, a szokásos 10-es prioritáson történik.

### Megjelenítés

A reCAPTCHA megjelenítéséhez hívd az `ITSEC_Recaptcha_API::display()` függvényt. Ha az API nem elérhető, üres szöveget ad vissza. A kulcsok lekérdezésével és a v2 vagy a láthatatlan változat választásával nem kell foglalkoznod, azt a bővítmény intézi.

```php
function my_plugin_display_recaptcha() {
	ITSEC_Recaptcha_API::display();
}
add_action( 'my_login_form_template', 'my_plugin_display_recaptcha' );
```

A reCAPTCHA-mezőhöz JavaScript kell; a `show_recaptcha()` metódus magától sorba állítja a szükséges szkripteket. Ha az űrlapot Ajaxszal töltöd be, előfordulhat, hogy a szkripteket kézzel kell kiírnod: a `show_recaptcha()` hívása után hívd a `wp_print_scripts()` függvényt.

A v2 reCAPTCHA jelvénynek alapból 10 képpont felső és alsó margója van. Ezt a `margin` beállítással módosíthatod:

```php
ITSEC_Recaptcha_API::display( array( 'margin' => array( 'top' => '20' ) ) );
```

Ez a felső margót 20 képpontra állítja, a többit az alapértéken hagyja. A margót teljesen kikapcsolhatod, ha `null` értéket adsz át.

### Ellenőrzés

Ha a bővítményed meghívja az `authenticate` szűrőt (jellemzően a `wp_signon()` vagy a `wp_authenticate()` függvénnyel, vagy az űrlapot közvetlenül a `wp-login.php`-ra küldi), a Kadence Security automatikusan felismeri a beküldött reCAPTCHA-t. A regisztrációs űrlapnál ugyanez igaz, ha a `register_new_user()` függvényt használod.

Ha egyéni bejelentkezési vagy regisztrációs űrlapod van, vagy más a felhasználási eset, közvetlenül is hívhatod az ellenőrzést:

```php
function my_plugin_do_login() {
	$validated = ITSEC_Recaptcha_API::validate();

	if ( is_wp_error( $validated ) ) {
		// Hibaüzenet megjelenítése.
		return false;
	}
	// A felhasználó beküldte a reCAPTCHA-t, folytatódhat az egyéni bejelentkezés.
}
```

A függvény a `g-recaptcha-response` POST-változót keresi, ami szabványos HTML-űrlapnál magától működik. Ha ez az érték nem érkezik meg (például GET-űrlapnál), állítsd be kézzel a `$_POST['g-recaptcha-response']` értékét. A válaszkód közvetlen átadása a `validate()` függvénynek jelenleg nem támogatott.

Az ellenőrzés eredményét a bővítmény a kérés idejére gyorsítótárazza. Ha a Google reCAPTCHA API ideiglenesen nem elérhető, az ellenőrzést sikeresnek tekinti.
