# hCaptcha és Cloudflare Turnstile blokkolása

> A hCaptcha és a Cloudflare Turnstile blokkolása a szkriptközponttal, helyőrzővel, WPForms példával és MU-pluginnal.

Ha nem akarsz Google reCAPTCHA-t használni, a hCaptcha és a Cloudflare Turnstile is választható. Egyik sem része a Complianz beépített integrációinak, de a **szkriptközponttal** könnyen blokkolhatók, és helyőrzőt is adhatsz hozzájuk.

![A szkriptközpont három listája: szkript hozzáadása, blokkolás és engedélyezési lista](./kepek/blokkolas-helyorzok-szkriptkozpont.webp)

*A szkriptközpont három listája: szkript hozzáadása, blokkolás és engedélyezési lista* (https://minta-bolt.hu/wp-admin/admin.php?page=complianz&id=integrations)

A képen a **Complianz → Integrations → Script Center** oldal látszik; a blokkolandó szkriptek URL-jét a **Szkript, iframe vagy bővítmény blokkolása** listában adhatod meg.

## hCaptcha (példa: WPForms)

A példa a WPForms-ot használja, mert ez a legnépszerűbb űrlapbővítmény, amelynek közvetlen hCaptcha-integrációja van. A teendő két részből áll: a hCaptcha blokkolása és egy helyőrző az űrlapon.

### Miért blokkold?

Ez egyéni döntés. A hCaptcha külső szerverről tölt be egy JavaScriptet, ami IP-címet és más adatot küld oda. Az adatok feldolgozása feltehetően az Egyesült Államokban történik, és sokan az adattovábbítási szabályozás (Privacy Shield) körüli bizonytalanság miatt a biztonság kedvéért hozzájáruláshoz kötik.

### Helyőrző a WPForms űrlapban

A WPForms ingyenes változatában nincs HTML-blokk az űrlapon, de minden mező **Description** (leírás) része HTML-t fogad. A helyőrzőt az utolsó, küldés előtti mezőbe érdemes tenni:

```html
<button data-service="hcaptcha" data-category="marketing" class="cmplz-blocked-content-container cmplz-blocked-content-notice cmplz-accept-service cmplz-accept-marketing cmplz-hcaptcha" style="text-align: left; cursor: pointer;">
Click here to accept hCaptcha cookies before sending the form.
</button>
```

Ha nem gombot szeretnél, a `button` elemet írd át `div`-re a HTML-ben és a CSS-ben is.

A helyőrző formázásához és a hCaptcha `div` hozzájárulás előtti elrejtéséhez (a hCaptcha HTML-je helyben betöltődik, csak a kihívás van blokkolva) ez a CSS kell:

```css
button.cmplz-blocked-content-container.cmplz-blocked-content-notice.cmplz-accept-service.cmplz-accept-marketing.cmplz-hcaptcha {
  background: whitesmoke;
  border: 2px solid hsl(11deg 100% 62%);
  border-radius: 3px;
  color: #222222;
  font-size: 1rem;
  padding: 10px 20px;
  width: 100%;
}
div.wpforms-container-full .wpforms-form .h-captcha[data-size="normal"],
.h-captcha[data-size="normal"] {
  display: none;
}
.cmplz-marketing .h-captcha {
  display: block !important;
}
```

### A hCaptcha blokkolása a szkriptközpontban

1. Nyisd meg a **Complianz → Integrations → Script Center** oldalt.
2. A **Szkript, iframe vagy bővítmény blokkolása** listán kattints az **Új hozzáadása** gombra.
3. Add meg a hCaptcha szkript URL-részleteit (`hcaptcha.com`, `hcaptcha.js`), és válaszd a **marketing** kategóriát.

### Minden egy MU-pluginban

Ha mindent egy MU-pluginba szeretnél csomagolni, ez a kód blokkolja a hCaptcha-t, felveszi a felismert szolgáltatások közé, és beteszi a helyőrző láthatóságához szükséges CSS-t. A helyőrzőt az űrlapba továbbra is neked kell beírnod. A példa ugyanazokat az osztályokat használja, mint a WPForms-változat; ha akarod, módosíthatod.

```php
<?php
defined( 'ABSPATH' ) or die( "you do not have access to this page!" );

add_filter( 'cmplz_known_script_tags', 'cmplz_hcaptcha_script' );
function cmplz_hcaptcha_script( $tags ) {
	$tags[] = array(
		'name'     => 'hcaptcha',
		'category' => 'marketing',
		'urls'     => array(
			'hcaptcha.com',
			'hcaptcha.js',
		),
	);
	return $tags;
}

/**
 * A szolgáltatás felkerül a felismertek listájára, így alapértelmezetten
 * be lesz állítva, és szerepel a róla szóló tájékoztatóban.
 */
function cmplz_hcaptcha_detected_services( $services ) {
	if ( ! in_array( 'hcaptcha', $services ) ) {
		$services[] = 'hcaptcha';
	}
	return $services;
}
add_filter( 'cmplz_detected_services', 'cmplz_hcaptcha_detected_services' );

add_action( 'cmplz_banner_css', 'cmplz_hcaptcha_css' );
function cmplz_hcaptcha_css() {
?>
button.cmplz-blocked-content-container.cmplz-blocked-content-notice.cmplz-accept-service.cmplz-accept-marketing.cmplz-hcaptcha {
    background: whitesmoke;
    border: 2px solid hsl(11deg 100% 62%);
    border-radius: 3px;
    color: #222222;
    font-size: 1rem;
    padding: 10px 20px;
    width: 100%;
}
div.wpforms-container-full .wpforms-form .h-captcha[data-size="normal"], .h-captcha[data-size="normal"] {
display: none;
}
.cmplz-marketing .h-captcha {
display: block !important;
}
<?php
}
```

## Cloudflare Turnstile

A Cloudflare Turnstile a Google reCAPTCHA adatvédelmi szempontból barátibb alternatívája. A reCAPTCHA a CAPTCHA-piac nagy részét uralja, de a GDPR-ral és más adatvédelmi szabályokkal csak részben egyeztethető össze. A hasonló alternatívák (például Friendly Captcha, hCaptcha) szintén az átlátható adatkezelésre és a látogató magánszférájának kímélésére törekednek.

A gond az automatikus CAPTCHA-kihívásokkal az, hogy a szöveges vagy számolós feladatokkal ellentétben a látogató viselkedési adatait gyűjtik, hogy megkülönböztessék az embert a bottól.

### Adatvédelmi hozzáférési tokenek

A Cloudflare célja egy helyi, az eszközre épülő kihívás, amely nem igényli, hogy a látogatót megkérdezzék, és az adatait a Cloudflare szerverén kezeljék. Ezt az Apple-lel közösen kidolgozott „privacy access token”-ekkel valósítja meg: a böngésző vagy az alkalmazás az Applétől kérdezi meg, hogy az eszköz valódi-e, ahelyett hogy böngészőadatokat gyűjtene. Ez a megközelítés akkor terjed gyorsan, ha a nagy gyártók elfogadják az új szabványt. Jelenleg a tokenek az iOS és macOS újabb változataival működnek, máshol a Turnstile a hagyományos módszerre, egy Cloudflare felé indított API-hívásra esik vissza. Ezt a Cloudflare „adatvédelmet megőrzőnek” nevezi, de hasonló adatvédelmi kérdéseket vet fel, mint a Google Fonts API.

### Blokkolás

A példa két feltételből indul ki:

- kliensoldali megjelenítés (client-side rendering);
- implicit megjelenítés (ez az alapértelmezett).

Adatvédelmi szempontból a kliensoldali megjelenítés javasolt: a szerveroldali vagy sütimentes megközelítés jelentősen csökkenti a látogató ellenőrzését.

1. Nyisd meg a **Complianz → Integrations → Script Center** oldalt.
2. Blokkold a `https://challenges.cloudflare.com/turnstile/v0/api.js` hívást: a **Szkript, iframe vagy bővítmény blokkolása** listán elég a `turnstile` kulcsszót megadni, mert az URL-ben szerepel.
3. Kategóriának választhatsz marketinget vagy statisztikát. A jelenlegi vizsgálatok szerint az adatot nem marketingre használják, ezért a **statisztika** elegendő; a Cloudflare irányítópultján látható is, hogy statisztikai célú.

### Helyőrző

A blokkolás a widgetet teljesen eltávolítja az oldalról. Ha űrlapba építed be, kell egy helyőrző, hogy a látogató tudja: egy kihívás van blokkolva hozzájárulásig. Építsd fel a helyőrzőt ugyanúgy, mint a reCAPTCHA-nál (lásd [reCAPTCHA kézi blokkolása és wpDiscuz](https://hub.hellowp.io/hu/plugins/complianz-gdpr-premium/blokkolas-helyorzok-recaptcha-kezi/)): egy elem a `cmplz-blocked-content-container cmplz-blocked-content-notice` osztályokkal, a hozzájárulást kiváltó `cmplz-accept-service` vagy `cmplz-accept-<kategória>` osztállyal, és olyan szöveggel, amely megmondja, hogy a hozzájárulás nélkül a kihívás nem töltődik be.

## Friendly Captcha: egyszerűbb megoldás a reCAPTCHA helyett

A Google reCAPTCHA a legnépszerűbb spamvédelem, de adatvédelmi szempontból gondot jelent: az adatminimalizálás elvének egyáltalán nem felel meg, ezért a GDPR szerint hozzájárulás kell hozzá. A Complianz megoldása, hogy a reCAPTCHA-t hozzájárulásig blokkolja, és csak hozzájárulás után, szükség esetén indítja el. Ez viszont függőségi gondokat okozhat: a reCAPTCHA sok bővítménybe be van építve, és ha bizonyos funkciók arra számítanak, hogy mindig betöltődik, elromolhatnak. Külön integráció kell például a Contact Form 7-hez, és a gyorsítótár- vagy optimalizáló bővítmények is zavarhatják a működést (JavaScript halasztása, összefűzése, kicsinyítése).

A legegyszerűbb tartós megoldás az adatvédelmi szempontból eleve megfelelő captcha. A **Friendly Captcha for WordPress** olyan megoldás, amelynél nem kell blokkolni a funkciókat, és nem kell függőségeket ellenőrizni.
