19 API-biztonsági bevált gyakorlat a megvalósításhoz és a biztonság megőrzéséhez

Az API biztonsága az egyik legfontosabb szempont, amire szinte minden alkalmazásban ügyelnie kell.

Manapság az API-k jelentik a legjobb módot az alkalmazások más alkalmazásokkal való integrálására. Átjárót biztosítanak az alkalmazáshoz, ezért az API-knak elég biztonságosaknak kell lenniük ahhoz, hogy ne érkezzenek nem kívánt látogatók.

Nézzünk meg néhány API sebezhetőséget, amelyek veszélyt jelenthetnek az alkalmazásra.

Gyakori API biztonsági rések

#1. Webhelyek közötti szkriptelés (XSS)

Az XSS-támadások gyakoriak a webalkalmazásokban, de API-kon keresztül is előfordulhatnak, ha a bejövő felhasználói adatok nincsenek megfelelően megtisztítva. A támadók rosszindulatú szkripteket futtathatnak a szerveren, és hozzáférhetnek az érzékeny adatokhoz.

#2. Díjkorlátozás megsértése

Az API sebességkorlátozó funkciójának megsértése lehetőséget ad a támadóknak, hogy hatalmas számú kéréssel bombázzák a szervert. Előfordulhat, hogy végül a szerver összeomlik, és az ügyfélbázisnak nehézségei támadhatnak az Ön elérésében.

#3. Nem megfelelő hitelesítés

Ha az API nincs megfelelően konfigurálva megbízható hitelesítési módszerrel, bármely harmadik fél hozzáférhet a rendszeréhez az API-n keresztül. Az engedélyezés azért is fontos, mert meghatározza, hogy ki férhet hozzá egy adott API-erőforráshoz egy meghatározott ideig.

#4. Nem biztonságos adatátvitel

Az API fogyasztóinak küldött adatokat útközben titkosítani kell. Ha nem, akkor fennáll annak a valószínűsége, hogy az adatokat a középső támadást használó támadók szivárogtatják ki. Ezért mindig ajánlott biztonságos protokoll, például HTTPS használata az adatok továbbítására.

#5. Elavult/elavult függőségek

Az API-k számos külső függőséggel rendelkeznek, amelyeket összetett feladatok végrehajtására és néhány összetett logika tehermentesítésére használnak. Ha ezek a függőségek sérülékenyek, akkor közvetve az API is sebezhetővé válik. Mindig frissítse a függőségi verziókat.

Most, hogy ismeri az API sebezhetőségeit, nézzünk meg néhány bevált módszert az API biztonsága érdekében.

Olvassa el még: A legjobb Postman alternatívák az API teszteléséhez fejlesztőknek

API biztonság – legjobb gyakorlatok

API verziószámítás

Kulcsfontosságú, hogy rendszeresen figyelje és frissítse az API-kat a frissített függőségekkel, mivel ezek a függőségek jelentős sebezhetőségeket tartalmazhatnak. Értesítheti az API felhasználókat az API javítási verziójának kiadásával a szemantikai verziószámítás.

  Mik azok az algoritmusok, és miért teszik kényelmetlenné az embereket?

Az API naprakészen tartása a legkevesebb, amit tehet, hogy megakadályozza a támadók általi kihasználást.

Hitelesítés

Egy csomó módszer létezik az API-felhasználók hitelesítésére. A legegyszerűbb módja a felhasználónév/jelszó megközelítés használata, de ez túl egyszerű, és csak a jelszó erősségén múlik.

Egy másik módszer az API kulcsok használata az API eléréséhez. Minden API-felhasználónak megadhat egy egyedi kulcsot, amelyet használhat.

A JWT-hitelesítés olyan technika, amelyben a felhasználói hitelesítő adatokat digitálisan aláírt tokenné alakítják, majd elküldik a felhasználónak. A felhasználó ezután minden kérésnél ugyanazt a tokent küldi vissza a kiszolgálónak, hogy a kiszolgáló ellenőrizhesse. A JWT-knek is van lejárati ideje.

A leghatékonyabb megoldás az OAuth. Lehetővé teszi harmadik fél hozzáférését az API-hoz a már meglévő bejelentkezési adatokkal. Például, ha már be van jelentkezve a Google-ba, egy alkalmazás jelszó nélkül bejelentkezhet a hitelesítő adatok segítségével. Az Ön Google-fiókja lesz a jelszó.

Engedélyezés

Az engedélyezés más dolog, mint a hitelesítés. Amíg Ön engedélyez egy felhasználót, az már hitelesítette az API használatát, és csak az az API-erőforrás, amelyhez hozzáférhetnek.

Például egy egyetemi tanár hozzáférhet egy köteg összes hallgatójához, de egyetlen hallgató csak az ő adataihoz férhet hozzá. Ebben az esetben a hallgató és a tanár ugyanahhoz a rendszerhez van hitelesítve, de csak bizonyos műveletekre jogosultak.

Az API-engedélyezés megfelelő működésének biztosítása megakadályozhatja az erőforrásokhoz való jogosulatlan hozzáférést.

Adatszerkesztés

Az adatok törlése az a folyamat, amely során szelektíven tárják fel az információkat a felhasználók számára, és védik az érzékeny információkat. A megfelelő engedélyezés jobb adatkezelést eredményezhet. Az adatvédelmi szabályozások, mint például a GDPR, szintén az adatkezelésen alapulnak. A nemkívánatos harmadik felek nem férhetnek hozzá a személyes vagy érzékeny adatokhoz.

Az adatreakciót köztes szoftver vagy átjárókezelő implementálásával valósíthatja meg.

Titkosítás

Ez lett a legfontosabb biztonsági ellenőrzés a mai világban. A titkosítás kötelező, ha bármilyen érzékeny információval foglalkozik. A legkevesebb titkosítást a HTTPS protokoll használatával teheti meg, amely TLS (Transport Layer Security) kézfogást és SSL (Secure Socket Layer) protokollt használ.

A végpontok közötti titkosítás egy másik módja az átvitel során lévő adatok szoros biztonságának. Az adatbázisban tárolt adatokat is titkosítani kell arra az esetre, ha egy támadó behatolhat az adatbázisba és hozzáférhet az adatokhoz.

Hibakezelés

Az alkalmazás infrastruktúrájával kapcsolatos információk részletes hibaüzenetekkel juthatnak el a támadókhoz. Ennek elkerülése érdekében tartsa általánosnak a hibaüzeneteket, és alkalmazzon egyéni hibakezelést. Győződjön meg arról, hogy a hiba részleteiben nem kerül naplózásra érzékeny rendszerinformáció.

  Mi a hálózati híd és hogyan készítsünk egyet

Bemeneti érvényesítés és adattisztítás

A bemenet ellenőrzése rendkívül fontos az API-k kezelésekor, mert nem ismeri a bemenetet, amíg a felhasználó be nem küldi.

A fertőtlenítés az a folyamat, amelynek során eltávolítanak minden nem kívánt végrehajtható kódot a rakományból. A támadó bevihet egy Javascript-szkriptet, és ha nem tisztítja meg, mielőtt átadná a HTML-nek, akkor az szkriptként fut le, és adatokat kér le.

A nem megfelelő fertőtlenítés XSS (cross-site scripting) támadásokhoz vezethet.

Behatolásérzékelő rendszerek

Az IDS néven is ismert behatolásérzékelő rendszerek segítenek az API-hoz érkező hálózati forgalom figyelésében és észlelésében. Ha bármilyen szokatlan viselkedést észlel a forgalomban, naplózhatja és riaszthatja az érintett hatóságokat.

Általában kétféle rendszer létezik: hálózat alapú és gazdagép alapú. A hálózat alapú rendszerekben a rendszer különböző ellenőrző pontok között van elosztva, hogy több ponton is figyelje a forgalmat. Egy gazdagép alapú rendszerben egyetlen gazdagépre van telepítve.

Az ilyen rendszerek nagyszerű lehetőséget nyújtanak annak meghatározására, hogy ki próbál hozzáférni a hálózatához, mielőtt akadályoznák az adatait.

IP engedélyezési lista

Az IP-engedélyezőlistázás egy módja annak, hogy csak kiválasztott IP-címek férhessenek hozzá az API-hoz és a hálózathoz. Előfordulhat, hogy ez a technika nem működik, ha nyilvános API-ja van, mert túl bonyolult minden IP listázásához.

Előnyös, ha tudja, hogy a rendszereknek csak néhány alkalmazása fog hozzáférni az API-jához.

JSON webes tokenek

A JWT-ket általában a felhasználó hitelesítésére használják úgy, hogy elküldik a felhasználónak a hitelesítő adataiból létrehozott, digitálisan aláírt tokent. Működik, mert elrejti a felhasználó tényleges hitelesítő adatait, és nem kell tárolnia a hitelesítő adatokat az adatbázisban vagy a felhasználói oldalon.

A JWT három részre osztható: fejléc, hasznos terhelés és aláírás. A hasznos adatrész tartalmazza a felhasználói hitelesítő adatokat, a fejléc pedig információkat tartalmazhat, például a használt algoritmust. Az aláírási részt a szerver és a kliens minden további kérésnél digitálisan aláírja.

A JWT-knek általában van lejárati dátumuk, amely után a szerver új tokent generál, majd elküldi a felhasználónak.

Naplózás és felügyelet

Az API forgalmának figyelése hasznos lehet a nem kívánt látogatók előzetes észlelésében és azonosításában. Minden egyes kérést figyelemmel kísérhet, de győződjön meg arról, hogy a naplók nem tartalmaznak érzékeny információkat.

Rate Limiting

Ha egy API nem alkalmaz sebességkorlátozást, akkor a hálózati forgalom váratlan beáramlása miatt ki van téve a DDoS támadásoknak. A támadók kis idő alatt hatalmas számú kéréssel áraszthatják el a rendszert, végül összeomolhatják a szervert.

  Hogyan lehet tompítani vagy kikapcsolni a billentyűzet világítását egy MacBookon

A korlátozó és sebességkorlátozó API-k az API-forgalom áramlásának korlátozásával elkerülik a szolgáltatásmegtagadási támadásokat.

Biztonságos függőségek

A sebezhetőségek nem csak az API-kódból származnak, hanem részei lehetnek bármely harmadik féltől származó függőségnek, amelyet az API-jában használ. Ezért fontos, hogy rendszeresen figyelje és vizsgálja meg függőségeit, és észlelje a bennük rejlő esetleges sebezhetőségeket.

A függőségek rendszeres ellenőrzéséhez és frissítéséhez ütemezett feladatokat is megvalósíthat, ha azok frissíthetők a biztonsági rést javító javítási verzióval. Ezenkívül válasszon olyan függőségeket, amelyek biztonságosabbak, és gyakran biztosítanak biztonsági frissítéseket.

Biztonsági fejléceket kell visszaküldeni az API-válasznak, hogy utasítsák a böngészőt az API biztonságáról és annak működéséről. A biztonság javítása érdekében elküldhető fontos fejlécek:

  • Cache-Control: állítsa nincs tárolásra, hogy elkerülje a bizalmas információk tárolását a böngészőben.
  • Tartalom-biztonsági politika: A keret-elődök „nincs” beállításával elkerülhető az API-válaszok keretezése egy iframe-ben.
  • Content-Type: Ez a fejléc azért fontos, mert enélkül a böngésző megpróbálja kitalálni az API-válasz típusát, és ez szippantási támadásokhoz vezethet. JSON-válasz esetén beállíthatja az Application/json értékre.
  • X-Content-Type-Options: Állítsa be a nosniff-et, hogy utasítsa a böngészőt, hogy ne találja ki a válasz MIME-típusát, és csak a Content-Type fejlécben keresse azt.

Biztonsági szabványok és keretrendszerek

Tervezze meg API-ját az előre meghatározott biztonsági szabványok és keretrendszerek segítségével, hogy az API naprakész legyen a legújabb biztonsági szempontokkal.

Token lejárata

Ha vivőjogkivonatokat használ, a token lejárati idejének rövidnek kell lennie, mert ez megköveteli a felhasználó újbóli hitelesítését, ami jó dolog. A JWT-ben általában két token van: hozzáférési és frissítési token. A frissítési tokenek hosszú életűek, míg a hozzáférési tokenek rövid életűek. Mindenesetre a tokeneknek rendelkeznie kell lejárati idővel.

Webes alkalmazások tűzfala

A WAF, más néven Web Application Firewall egy átjáró, amely figyeli, szűri és blokkolja a rosszindulatú hálózati forgalmat. Gyakran ez a legjobb módja a rosszindulatú támadások megelőzésének a HTTP protokollon keresztül.

API-átjárók használata

Ha egyszerűen szeretné beállítani az API-biztonságot, és kezelni szeretné az API-útvonalakat és azok hozzáférését, válassza az API-átjárókat. Emellett megfigyelő, naplózó és elemző eszközöket is biztosítanak, amelyek segítségével nyomon követheti az API-ját.

Zero-Trust

A nulla bizalmi stratégia mögött az a gondolat, hogy ne bízzunk egyetlen központi forrásban sem. A biztonságot rétegesen kell megvalósítani, és több ellenőrzőponton kell megvalósítani.

Alapvetően senkiben nem lehet megbízni, még az API-n dolgozó fejlesztőkben sem. Minden egyes átjárót figyelemmel kell kísérni és elemezni kell a biztonság megsértésének megelőzése érdekében.

Ilyenkor jól jön az automatizálás. Automatizált eszközökkel rendszeresen figyelheti és blokkolhatja a szokatlan vagy gyanús tevékenységeket.

Végső szavak

Csak annyit tehet az API-k biztonsága érdekében. A szoftverekben mindig vannak kiskapuk, amelyeket ki lehet használni. Az ilyen kiskapuk nulladik napi sebezhetőséget eredményeznek. Tehát az API-k biztonsága érdekében a legkevesebb, amit tehet, hogy frissíti őket a legújabb biztonsági szabványokkal.

Tekintse meg a legjobb dinamikus alkalmazásbiztonsági tesztelési eszközöket.