# Biztonsági összefoglaló

> Hogyan kezeli a Gravity Forms a biztonságot: hibabejelentés, automatikus frissítés, az OWASP Top Ten kockázatai és a REST API védelme.

Ez a fejezet a Gravity Forms biztonsági felépítését foglalja össze. Döntéshozóknak és fejlesztőknek is szól, akik értékelik, hogyan véd a bővítmény a gyakori fenyegetések ellen.

## Alapok

A Gravity Forms űrlapkezelő rendszer, GPLv2 (vagy újabb) licenccel. A Rocketgenius Inc. fejleszti, vezetősége a három alapító (Alex Cancado, Carl Hancock és Kevin Flahaut), akik a fejlesztésről és a közösségi kezdeményezésekről is döntenek. A szoftver 2007 óta készül, és az OWASP Top Ten kockázataival szemben folyamatosan keményítik.

Egy fő (major) verzión belül a kisebb és javító kiadások visszafelé kompatibilisek, a fő verzióváltás törést okozhat. Mindig a legfrissebb stabil kiadást érdemes futtatni.

## Sebezhetőségek kezelése

- A fejlesztők biztonsági szakemberekkel dolgoznak együtt, és felelős közzétételt (responsible disclosure) követnek. Egy korábbi példa: a Fájlfeltöltés mező tetszőleges fájlfeltöltési hibáját az 1.8.20 javította.
- Kutatók és ügyfelek külön csatornán jelenthetnek hibát; a fejlesztők zárt tárolóban dolgoznak.
- Minden bejelentést visszaigazolnak, ellenőriznek és súlyossági besorolást adnak. Megerősített hibára javítás készül, amely a következő kiadásban vagy azonnali biztonsági kiadásban jelenik meg.
- Minden kiadásról közlemény készül a blogon; a hibát felelősen bejelentő nevét megemlítik. A részletek megbízható félnek kérésre elérhetők.
- A rendszergazdák az irányítópulton értesítést kapnak az új kiadásról. Ha az automatikus háttérfrissítés be van kapcsolva, a biztonsági javítás magától települ. Ezt a Gravity Forms beállításaiban vagy a WordPress konfigurációs fájljában ki lehet kapcsolni, de nem ajánlott. A frissítések kezeléséről lásd: [Régi verziók és kézi frissítés](https://hub.hellowp.io/hu/plugins/gravityforms/hogyan-regi-verziok-es-kezi-frissites/).

## Az OWASP Top Ten kockázatai

| Kockázat | Védekezés |
|---|---|
| Hibás hozzáférés-szabályozás | A funkciószintű kérések végrehajtás előtt jogosultság-ellenőrzésen mennek át, az admin oldalak a hitelesítéshez kötöttek. Az űrlap- és bejegyzésazonosítók láthatók, de a jogosultsági rendszer megakadályozza a jogosulatlan lekérést. |
| CSRF | A WordPress nonce-tokenjeit használja (felhasználóhoz, művelethez, objektumhoz és időszakhoz kötött, kijelentkezéskor érvénytelenné válik). |
| Nem ellenőrzött átirányítás | A `wp_safe_redirect()` függvényt használja. |
| Hibás biztonsági konfiguráció | A beállításokat egyetlen jogosult rendszergazda módosíthatja, az alapértékeket a fejlesztők folyamatosan értékelik. |
| XXE | A WordPress és a Gravity Forms XML feldolgozáskor letiltja az egyedi XML-entitások betöltését. |
| Ellátási lánc hibái | A kevés külső könyvtárat figyelik, szükség esetén lecserélik vagy elágaztatják. |
| Kriptográfiai hibák | A felhasználói jelszavakat a WordPress sózza és hasheli; a bejegyzések adatait a jogosultsági rendszer védi. |
| Injektálás | A WordPress adatellenőrző és tisztító függvényeit használja HTML-ben, URL-ben, HTTP-fejlécben, adatbázisban és fájlrendszerben. A feltölthető fájltípusokat szűrőkkel és beállításokkal tovább lehet szűkíteni. |
| XSS | A megbízható felhasználók (az egyes telepítés rendszergazdái, multisite-on a webhely rendszergazdái és az űrlapszerkesztésre jogosultak) tehetnek szűretlen HTML-t vagy JavaScriptet például a megerősítésbe vagy a mezőcímkébe. A nem megbízható felhasználók tartalma alapból szűrt. |
| Hitelesítési hibák | A WordPress kezeli a fiókokat és a munkameneteket; a sütik szerveroldalon ellenőrzöttek, kijelentkezéskor a munkamenet megszűnik. A REST API OAuth 1.0a-t (HMAC-SHA1) használ munkamenet nélküli kapcsolatokhoz. |

## SSRF

A WordPress HTTP-kérései szűrve vannak: a loopback és a privát IP-címek nem érhetők el, és csak bizonyos szabványos portok engedélyezettek. A Gravity Forms minden HTTP-kéréshez a WordPress HTTP API-ját használja.

## REST API biztonsága

A REST API v2 az űrlapokhoz, bejegyzésekhez és beküldésekhez ad programozott hozzáférést. Alapból ki van kapcsolva, a rendszergazdának kell bekapcsolnia az **Űrlapok → Beállítások → REST API** oldalon.

- **Hitelesítés:** az ajánlott módszer az OAuth 1.0a HMAC-SHA1 aláírással (HTTPS nélküli kapcsolathoz kötelező). Az alapszintű hitelesítés csak HTTPS-en használható, különben a hitelesítő adatok szövegesen mennének át. A WordPress alkalmazásjelszavai a 2.4.21.4 óta támogatottak. Bejelentkezett admin munkamenetből jövő kérés a WordPress süti- és nonce-hitelesítésére esik vissza.
- **Hozzáférés:** a kulcsok Consumer Key és Consumer Secret párként készülnek, egy WordPress-felhasználóhoz kötve, olvasási, írási vagy olvasási/írási jogosultsággal. A kérés a felhasználó Gravity Forms jogosultságaival fut, ezért jogosultság nélkül érvényes kulccsal sem végezhető el a művelet. A jogosultsági követelmények szűrőkkel módosíthatók. A beküldés végpontja szándékos kivétel: nincs szükség Gravity Forms jogosultságra, hogy a nyilvános űrlapok API-n át is beküldhetők legyenek.

## A WordPress API-k, amelyekre a védelem épül

- **Adatbázis API:** az adatbázis-hozzáférés mindig ezen át megy.
- **HTTP API:** minden HTTP-kérés ezen át megy; kezeli a sütiket, a tömörítést és a protokoll részleteit.
- **Jogosultság- és aktuális felhasználó API:** ezzel védekezik a jogosulatlan hozzáférés ellen.

A szerepkörök és jogosultságok beállításáról a [Szerepkörök](https://hub.hellowp.io/hu/plugins/gravityforms/beallitasok-szerepkorok/) fejezet szól.
