CORS - az örök mementó

CORS - az örök mementó
audio-thumbnail
CORS - az örök mementó
0:00
/131.890958

Találtam egy bejegyzést CORS témában és úgy gondoltam, hogy írok egy cikket a témában, ezzel is rögzítve az olvasottakat. A legtöbbször front-end fejlesztők találhatják magukat szemben az alábbi hibával:

Tipikus CORS hiba

Alapvetően tényleg egy rendszeresen felmerülő félreértés, hogy mi is maga a CORS. Sokan gondolják azt, hogy egy backend-et védő mechanizmus, pedig alapjáraton a lényeg nem a backenden történik! Ha a CORS tényleg egy back-end védelem, akkor hogyan lehetséges az, hogy Insomniából vagy Postman-ből gond nélkül intézhetünk hívásokat ilyen jellegű hiba nélkül?!

Példa

Lássunk egy példát, amiből megérthetjük a CORS lényegét! Tegyük fel, hogy ellátogatunk a bankunk oldalára, például az enbankom.com-ra. Itt bejelentkezünk az adatainkkal és úgynevezett cookiek (sütik) keletkeznek a böngészőben.

Ezután meglátogatunk egy más jellegű oldalt, például a filmletoltooldal.hu-t. Ezen az oldalon mondjuk lefut egy script, ami intéz egy kérést az ottani backend felé aminek a "credentials" értéke "include"-ra van állítva. Ennek következtében a korábban a cookiek közé került banki adatok mind szépen küldődnek a filmletoltooldal.hu backendje felé, ami nem biztos, hogy szerencsés, semmilyen szempontból sem! Hiszen az sem szerencsés, ha mondjuk a filmletoltooldal.hu egy kérést intéz a bank felé a hitelesített cookie adatokkal, mert illetéktelenül hajthatna végre kéréseket a bankunk oldalán.

Na, itt jön képbe a böngésző által kikényszerített mechanizmus: a CORS!

A CORS megakadályozza a jogosulatlan webhelyekről érkező, különböző eredetű kéréseket. Fontos megjegyezni, hogy nem közvetlenül a backendet védi, hanem a böngésző érvényesíti a szabályokat. Azt is fontos tudni, hogy a CORS egyébként pluginokkal megkerülhető, így nem nyújt teljes biztonságot, de mindenképpen egy biztonságosabb mederbe tereli a front-end és a backe-end kommunikációját és az adatok kezelését egy átlag felhasználó számára.

Így remélem már világosabb, hogy miért is csak böngészővel kapcsolatban merül fel ez a kérdés és, hogy mit is jelent pontosan ez a "hibaüzenet".