# Felhasználói biztonság

> A felhasználók biztonságának áttekintése és kezelése: 2FA-emlékeztető, jelszóvisszaállítás, erős jelszavak, jelszó életkora és a frontend-felület.

A **Biztonság → Felhasználói biztonság** oldal egy helyen kezeli a felhasználói fiókok biztonságát: megmutatja a felhasználók állapotát, és gyors műveleteket kínál egyszerre több felhasználóra.

![A Felhasználói biztonság oldal](./kepek/bejelentkezes-vedelem-felhasznaloi-biztonsag.webp)

*A Felhasználói biztonság oldal* (https://minta-bolt.hu/wp-admin/admin.php?page=itsec-user-security)

A táblázat minden felhasználónál mutatja a szerepkört, az utolsó aktivitást (**Last Seen**), a jelszó erősségét (**PW Strength**) és életkorát (**PW Age**), valamint azt, hogy be van-e kapcsolva a kétfaktoros hitelesítés (**2FA**). A szűrővel (**Filter**) felhasználói csoportokra szűkítheted a listát, az **Edit User Group Settings** gombbal pedig az érintett csoportok beállításait szerkesztheted. A **Edit User** gombbal vagy a többszörös kijelöléssel a felhasználókon gyors műveleteket végezhetsz.

## Gyors műveletek

- **Kétfaktoros hitelesítés emlékeztető**: e-mailben figyelmezteti a kijelölt felhasználókat vagy csoportokat, hogy állítsák be a 2FA-t. A munkafolyamatot nem szakítja meg, így jól használható a biztonsági szabályok betartatására.
- **Jelszó-visszaállítás kényszerítése**: a kiválasztott felhasználóktól azonnali jelszócserét kér, például adatszivárgás vagy feltételezett kompromittálódás esetén. A bővítmény nem szabja testre a levelet: a WordPress beépített `retrieve_password()` függvényét hívja, így az alapértelmezett WordPress-jelszóvisszaállító e-mail megy ki. A levél tartalmazza a webhely nevét, a felhasználónevet és a szokásos jelszó-visszaállító hivatkozást.
- **Felhasználó zárolásának kényszerítése**: azonnal megszünteti a megadott fiókok aktív munkameneteit. Feltört fiók vagy jogosulatlan hozzáférés esetén hasznos, különösen a jelszó-visszaállítással együtt.
- **Hozzáadás felhasználói csoporthoz**: a kijelölt felhasználókat csoportba teszi, így azokra a csoport szabályai (jelszókövetelmények, 2FA kényszerítése) érvényesek.
- **Felhasználói fiók törlése**: eltávolítja a nem használt vagy feltört fiókokat.

A kapcsolódó modulok (például a 2FA vagy a megbízható eszközök) kikapcsolt állapotban összecsukott beállításokat mutatnak; a beállításaik bekapcsolás után (néhol a lap alján mentve) érhetők el.

## Erős jelszavak

Szerepkörök szerint előírhatod az erős jelszót.

1. Nyisd meg a **Biztonság → Beállítások → User Groups** oldalt.
2. Abban a csoportban, amelyiknek előírod, a **Jelszókövetelmények** szakaszban kapcsold be az **Erős jelszavak** beállítást.

A funkció a WordPress beépített jelszóerősség-mérőjét használja (zxcvbn), ezért az erősség szintje nem finomhangolható: a jelszó vagy megfelel, vagy nem. Nyilvános regisztrációjú webhelyen az alacsony jogosultságú szerepköröknek (például feliratkozóknak) az erős jelszó előírása kellemetlen lehet, ezért inkább csak a magasabb jogosultságú felhasználóknál érdemes használni.

A bővítmény két lépésben kezeli a jelszóerősséget:

1. **Vizuális erősségmérő (beküldés előtt)**: a WordPress- és a WooCommerce-regisztrációs űrlapokon a felhasználó gépelés közben látja a beépített mérőt (nagyon gyenge, gyenge, közepes, erős). Ez csak visszajelzés, a beküldést nem akadályozza.
2. **Kiszolgálóoldali ellenőrzés (beküldés után)**: a tényleges kikényszerítés a **Regisztráció**, a **Fizetés** vagy a **Megrendelés elküldése** gombra kattintás után történik, a WordPress `user_profile_update_errors` műveletén. Ha a jelszó nem felel meg a szerepkör követelményeinek, a regisztráció vagy a fizetés meghiúsul, hibaüzenet jelenik meg, és a felhasználónak erősebb jelszót kell választania.

A WooCommerce-fiók létrehozásakor a fizetésnél is ugyanez érvényes: a mérő a jelszómezőnél látszik, az ellenőrzés a megrendelés elküldésekor történik, és túl gyenge jelszónál a fizetés hibával áll le.

Ha egyéni kóddal a `wp_set_password()` függvénnyel állítasz be jelszót, az akkor is beállítódik, ha gyenge (mert a függvény nem végez erősségellenőrzést). A bővítmény a felhasználó következő bejelentkezésekor értékeli: ha a jelszó nem elég erős, kötelező jelszócsere képernyőre irányítja, és a felhasználó addig nem léphet tovább, amíg erős jelszót nem állít be.

**Kikapcsoltam az erős jelszavakat, mégis megkövetelik.** Leggyakoribb ok, hogy nem kapcsoltad ki az adott felhasználói csoportnál (az alapbeállításnál a csoportok a WordPress szerepköröknek felelnek meg). Minden olyan csoportnál kapcsold ki, amelynél nem akarod megkövetelni.

## Kompromittált jelszavak elutasítása

A funkció a jelszavakat ismert adatszivárgások adatbázisával veti össze (Have I Been Pwned szolgáltatás):

- csak a jelszó kivonatának első öt karaktere kerül titkosított kapcsolaton elküldésre;
- a jelszó nyílt szövegben sosem kerül kiadásra.

Bekapcsolás: a **Biztonság → Beállítások → User Groups** oldalon, a **Jelszókövetelmények** szakaszban kapcsold be a **Kompromittált jelszavak elutasítása** beállítást a megfelelő csoportoknál. Ha a felhasználó kompromittált jelszóval próbál belépni, felszólítást kap a jelszó cseréjére, jelszógenerátor használatával; a csere után biztonságosan beléphet.

## Jelszó érvényességi ideje

A jelszó rendszeres cseréjét írja elő. Ajánlott gyakorlat a 120 naponkénti (4 havonkénti) csere. Kapcsold be a **Biztonság → Beállítások → Features → Login Security** oldalon a modult, majd állítsd be a csoportonként érvényes legnagyobb jelszókort (**Jelszó érvényességi ideje**) a csoportok beállításainál.

## Jelszócsere kényszerítése

Az adminisztrátor azonnali vagy a következő bejelentkezéskori jelszócserét írhat elő, két helyről:

- Minden felhasználóra: a **Biztonság → Vezérlőpult** oldal **User Security Profiles** kártyáján válaszd a **Force Password Change for All Users** lehetőséget.
- Meghatározott felhasználókra: a **Biztonság → Felhasználói biztonság** oldalon az **Edit User** vagy a többszörös szerkesztés (**Quick Actions, Edit Multiple Users**) gyors műveleteivel kapcsold be a jelszó-visszaállítás kényszerítését a kijelölt fiókoknál.

## Felhasználói biztonsági beállítások a webhely nyilvános részén

A felhasználók a saját biztonsági beállításaikat (például a 2FA-t) a webhely nyilvános oldaláról is kezelhetik, anélkül hogy az admin felületre lépnének.

1. **Blokkszerkesztővel**: szerkessz egy oldalt vagy bejegyzést, add hozzá a „Solid Security User Security Settings” blokkot, és tedd közzé az oldalt.
2. **Rövidkóddal** (blokkszerkesztő nélküli webhelyen):

```text
[solid_security_user_profile_settings]
```

### WooCommerce Fiókom oldal

Ha a vásárlók nem érik el a WordPress admin felületét, két módon adhatod nekik a beállításokat:

1. **Külön oldalon**: tedd a blokkot (vagy a fenti rövidkódot) egy tetszőleges oldalra, és korlátozd a hozzáférést a bejelentkezett felhasználókra. Ez a legegyszerűbb, ha már van egyéni fiók- vagy profiloldalad.
2. **A WooCommerce Fiókom oldalán, kódrészlettel**: új végpontot vehetsz fel a WooCommerce Fiókom oldalán, és ott jelenítheted meg a felhasználói beállításokat. Add hozzá az alábbi kódot a gyermektémád `functions.php` fájljához vagy egy saját bővítményhez:

```php
// Végpont regisztrálása
add_action( 'init', function() {
	add_rewrite_endpoint( 'security-settings', EP_ROOT | EP_PAGES );
} );

// Menüpont a Fiókom oldalon
add_filter( 'woocommerce_account_menu_items', function( $items ) {
	$logout = $items['customer-logout'] ?? null;
	unset( $items['customer-logout'] );
	$items['security-settings'] = __( 'Biztonsági beállítások', 'textdomain' );
	if ( $logout ) {
		$items['customer-logout'] = $logout;
	}
	return $items;
} );

// A felhasználói biztonsági beállítások megjelenítése
add_action( 'woocommerce_account_security-settings_endpoint', function() {
	echo do_shortcode( '[solid_security_user_profile_settings]' );
} );
```

A kód hozzáadása után nyisd meg a **Beállítások → Közvetlen hivatkozások** oldalt, és kattints a **Módosítások mentése** gombra a hivatkozásszabályok frissítéséhez. Ezután a bejelentkezett vásárlók a Fiókom oldalon egy új fület látnak (az elnevezése átírható), ahol az `/wp-admin` elérése nélkül állíthatják be például a 2FA-t.
