OWASP Top 10: A legkritikusabb webalapú sebezhetőségek

A webfejlesztésben a funkcionalitás és a dizájn mellett a legfontosabb szempont a biztonság (Security). Amint publikussá teszel egy weboldalt az interneten, automatizált botok ezrei kezdik el pásztázni azt nyitott kapukat, sérülékenységeket keresve. Az OWASP (Open Worldwide Application Security Project) egy non-profit szervezet, amely rendszeresen kiadja a "Top 10" listáját. Ez a lista a webes alkalmazásokat fenyegető legveszélyesebb biztonsági réseket összegzi.

Nézzük meg a legismertebb sérülékenységeket és azok megelőzési módjait a legutóbbi jelentések alapján!

1. Injection (Injektálás) - SQL Injection

Injektálásról akkor beszélünk, amikor a rosszindulatú felhasználó olyan adatot küld az alkalmazásnak, amely megváltoztatja a szerver által végrehajtandó parancsot. A leghíresebb példa az SQL Injektálás. Ha a felhasználótól kapott jelszót ellenőrzés nélkül illeszted be az SQL lekérdezésbe, a támadó olyan kódot gépelhet be (pl. ' OR '1'='1), ami az adatbázis összes rekordját kiszolgáltatja.

Védekezés: Soha ne fűzz össze (concatenate) SQL stringeket manuálisan! Használj Paraméterezett lekérdezéseket (Prepared Statements) vagy egy ORM rendszert (pl. Prisma, Sequelize), amely automatikusan "megtisztítja" a bemenetet.

2. Broken Authentication (Tört Hitelesítés)

Ebbe a kategóriába tartoznak a rosszul implementált bejelentkezési funkciók, az egyszerűen kitalálható, gyenge jelszavak engedélyezése, a nem megfelelően védett munkamenet (Session) azonosítók, vagy a bejelentkezés korlátozásának hiánya (lehetővé téve a Brute Force, azaz nyerserős jelszótörő támadásokat).

Védekezés: Implementálj Többfaktoros Hitelesítést (MFA). Követeld meg az erős jelszavakat. Használj lassú jelszó-hashelő algoritmusokat (pl. bcrypt, Argon2). Tiltsd le a fiókot néhány sikertelen próbálkozás után.

3. Cross-Site Scripting (XSS)

Az XSS akkor történik, amikor a támadó JavaScript kódot tud becsempészni a te weboldaladra, amit aztán más, ártatlan felhasználók böngészője gyanútlanul lefuttat. Képzelj el egy fórumot, ahol a támadó hozzászólásként nem egyszerű szöveget, hanem egy <script> taget küld be, ami ellopja az olvasók Cookie-jait (süti).

Védekezés: Minden, a felhasználótól érkező tartalmat kódolni (escape/sanitize) kell, mielőtt megjeleníted a HTML-ben. A modern frontend keretrendszerek (mint a React vagy az Angular) alapértelmezés szerint védenek a legtöbb XSS ellen, mivel a változókat szövegként, és nem végrehajtható HTML-ként kezelik.

4. Insecure Direct Object References (IDOR)

IDOR sérülékenység akkor lép fel, ha az alkalmazás pusztán egy paraméter (pl. az URL-ben lévő azonosító) alapján ad hozzáférést egy objektumhoz, a jogosultság ellenőrzése nélkül. Például, ha bejelentkezem, és a profilomat a /api/profil/100 URL-en érem el. Mi történik, ha manuálisan átírom az URL-t /api/profil/101-re? Ha a szerver nem ellenőrzi, hogy jogosult vagyok-e a 101-es felhasználó adataira, akkor IDOR hibáról beszélünk.

Védekezés: Minden egyes adatbázis-lekérésnél a backendnek ellenőriznie kell a folyamatban lévő munkamenet (Token) alapján, hogy az aktuális felhasználónak tényleg van-e joga olvasni vagy módosítani a kért erőforrást.

Összegzés

A webbiztonság nem egy "egyszer beállítom és kész" folyamat, hanem egy folyamatos macska-egér harc a támadókkal. Az OWASP Top 10 listájának ismerete az abszolút minimum minden webfejlesztő számára. Ne bízz a kliensoldali (böngészőben történő) validációkban, mivel azok könnyen megkerülhetők! A valódi biztonság mindig a szerveren (Backend) dől el.

Gyakran Ismételt Kérdések (GYIK)

Mi a különbség az XSS és az SQL Injection között?

Mindkettő injektálásos támadás, de más a célpontjuk. Az SQL Injection magát az adatbázis szervert támadja, adatokat lopva vagy semmisítve meg. Az XSS ezzel szemben a többi felhasználó böngészőjét veszi célba, hogy ellopja a jelszavaikat vagy a munkamenetüket.


Ezek is érdekelhetnek: