web biztonsag · 8 perc
CSRF támadás: hogyan működik, és hogyan védekezz ellene?
Mi a Cross-Site Request Forgery? Cookie-alapú munkamenetek, SameSite, CSRF token és Origin-ellenőrzés példákkal.
A CSRF (Cross-Site Request Forgery) során egy támadó olyan kérést próbál elindíttatni a felhasználó böngészőjével, amely egy másik webhelyen az áldozat meglévő jogosultságával hajtódhat végre. A probléma főleg ott jelentkezik, ahol a böngésző automatikusan elküldi a munkamenet-azonosító cookie-t.
Egyszerű példa: a felhasználó már be van jelentkezve
Valaki belép egy adminfelületre, majd egy másik, rosszindulatú weboldalt nyit meg. Ha az adminfelület nem ellenőrzi megfelelően a módosító kérések eredetét, a másik oldal megpróbálhat egy állapotváltoztató kérést kiváltani a böngészőből. Az, hogy ez sikerül-e, többek között a cookie-k beállításaitól és az alkalmazás védelmétől függ.
CSRF és XSS: két eltérő támadási osztály
Az XSS egy weboldal megbízható környezetében futtat nem kívánt szkriptet; a CSRF jellemzően a felhasználó automatikusan csatolt hitelesítési állapotát próbálja kihasználni. Az XSS a CSRF elleni egyes védekezéseket is megkerülheti, ezért a két veszély ellen együtt kell tervezni.
A legfontosabb védekezési rétegek
- A módosító kérésekhez használj szerver által ellenőrzött CSRF tokent, ha a keretrendszer és hitelesítési modell ezt indokolja.
- Állíts be megfelelő SameSite cookie-szabályt; ez fontos védelmi réteg, de önmagában nem minden esetben elég.
- Ellenőrizd az Origin, szükség esetén a Referer fejlécet a megfelelő szerveroldali szabályok szerint.
- Az állapotváltoztató műveleteket ne GET kérésen keresztül hajtsd végre.
- Kritikus műveleteknél használj újbóli megerősítést vagy több tényezős ellenőrzést, ahol indokolt.
Miért nem véd meg önmagában a CORS?
A CORS fő feladata a böngészőben a különböző originről történő válaszhozzáférés szabályozása. Bizonyos cross-origin kérések válaszát blokkolhatja, de nem egyenértékű CSRF-védelemmel: a kérés elküldhetősége és a válasz JavaScriptből való olvashatósága külön kérdés.
Mire figyelj Next.js és Supabase alapú alkalmazásnál?
Elsőként tisztázd, hol tárolódik a hitelesítési állapot: cookie-ban vagy más módon. Szerveroldali API-végpontnál a jogosultság-ellenőrzés nem maradhat el attól, hogy a kliensnek van egy adminoldala. Ha cookie-alapú azonosítást használsz, a CSRF védelmi intézkedéseket a konkrét session-megoldáshoz illeszd.
Rövid ellenőrzőlista
- Állapotváltoztató végpontok listázása.
- Cookie- és SameSite-szabályok felülvizsgálata.
- Origin/CSRF-token ellenőrzések tényleges szerveroldali tesztje.
- Jogosultságvizsgálat minden érintett végponton.
- Kritikus műveletek naplózása, hibakezelése és ismételhetőségi vizsgálata.
A részletes megoldásmintákhoz az OWASP CSRF Prevention Cheat Sheet dokumentációját használd.
OWASP: CSRF Prevention Cheat Sheet→A biztonsági témájú fejlesztések az egyedi webes rendszereknél is fontosak.
Webfejlesztés Debrecen→