Application Programming Interface (API) je platforma, na ktorej aplikácie komunikujú. Rozhrania API sú rozšírené a zohrávajú dôležitú úlohu v mnohých moderných softvérových architektúrach.
Zabezpečenie API je prax prevencie alebo zmiernenia útokov na API. Rozhrania API sú zraniteľné voči útokom, ktoré majú v úmysle narušiť aplikáciu alebo neoprávnene získavať citlivé údaje.
Rozhrania API majú veľa zraniteľných bodov. Patrí medzi ne nefunkčná autentifikácia, obmedzenie rýchlosti a neoprávnené vloženie kódu. Chyby zabezpečenia, ako sú tieto, môžu ohroziť výkon vašej aplikácie a integritu jej údajov. Našťastie existujú osvedčené postupy, ktoré môžete použiť na zabezpečenie spoľahlivého zabezpečenia rozhrania API.
1. Overiť
Či už pracujete s REST, SOAP alebo GraphQL, autentifikácia API je životne dôležitá. Autentifikácia je proces overenia identity používateľa pred tým, ako získa prístup do systému.
Autentifikácia sa posunula od používania iba hesiel viacfaktorové autentifikačné procesy (MFA). MFA zaisťuje, že používateľ pred prístupom k svojmu účtu vykoná viac ako jednu overovaciu kontrolu.
Najbežnejšou MFA je dvojstupňové overenie, čo do značnej miery znižuje hrozby. Vyžaduje si to ďalšie metódy overenia, ako je kód odoslaný na telefónne číslo alebo e-mailový účet.
Dvojstupňový proces znižuje šance, že ktokoľvek získa prístup k systému. Ak nemajú prístup k druhému overovaciemu kódu, nebudú mať prístup.
2. Využite protokol OAuth
OAuth je výkonný spôsob kontroly zabezpečenia API. Ide o otvorený protokol, ktorý jednoduchým a štandardným spôsobom zabezpečuje autorizáciu z webových, mobilných a desktopových aplikácií.
Ide o autentifikačný rámec založený na tokenoch, ktorý riadi prístup k API. OAuth umožňuje prístup tretích strán k informáciám bez odhalenia poverení používateľa.
3. Overte vstup
Validácia údajov zahŕňa typovú kontrolu prichádzajúcich údajov. Tento postup pomáha chrániť sa pred útokmi, ako je vstrekovanie kódu alebo skriptovanie medzi stránkami.
Mali by ste vytvoriť kontroly overenia údajov vo všetkých koncových bodoch. Takéto kontroly zahŕňajú overenie syntaxe a hodnoty údajov, ktoré API prijíma.
Niektoré bežné metódy overenia vstupu zahŕňajú:
- Schémy overenia JSON a XML
- Regulárne výrazy
- Kontrola dátových typov
- Najmenší a najväčší rozsah hodnôt pre čísla
- Najmenšia a najväčšia dĺžka strún
Overenie vstupu zabraňuje vášmu API prijímať škodlivé údaje do vášho systému. Rámec Django REST má vynikajúce funkcie, ktoré vám pomôžu overiť váš vstup API.
Rozhranie API môžete otestovať pomocou fuzzingu vstupu. Fuzzing testuje náhodné údaje oproti API, kým nezistíte bezpečnostný problém. Zabezpečené rozhranie API vráti chybové hlásenie, ak obsahuje údaje, ktoré nie sú štandardné.
4. Použite obmedzenie sadzby
Obmedzenie rýchlosti je spôsob, ako chrániť server, keď existuje príliš veľa požiadaviek. Zabraňuje prepracovaniu a vypínaniu servera.
Obmedzenie rýchlosti chráni vašu aplikáciu pred útokmi, ako je odmietnutie služby (DoS). Keďže rozhrania API získavajú viac používateľov, sú náchylnejšie na takéto útoky. Útoky DoS ovplyvňujú výkon vašej aplikácie alebo ju dokonca zrútia.
S obmedzením rýchlosti môžu používatelia pristupovať iba k určitému počtu žiadostí za naplánovaný čas. Rozhranie API blokuje prístup používateľov až do ďalšej relácie, ak prekročia svoj nastavený limit.
Môžete napríklad nastaviť limit žiadostí pre spravodajský web na 1 000 žiadostí za hodinu. Keď používateľ prekročí tento limit, v informačnom kanáli aplikácie neuvidí žiadne nové položky. Žiadosti sa potom obnovia po uplynutí časového limitu.
Obmedzenie sadzieb je tiež užitočné, keď chcete speňažiť API. Môžete mať kategórie pre používateľov s rôznymi limitmi sadzieb. To môže povzbudiť ľudí, aby platili viac, ak potrebujú podať väčší počet žiadostí.
5. Filtrovať údaje
Rozhrania API by mali zdieľať iba požadované údaje. Rozhranie API môžete otestovať pomocou náhodných údajov, aby ste skontrolovali, aký druh údajov vracia. Uistite sa, že neprezrádza bezpečnostné informácie, ako sú kľúče API alebo heslá.
Poskytnite dostatok koncových bodov pre rôzne druhy údajov. Používateľom to umožní prístup ku konkrétnym informáciám, ktoré potrebujú, a vyhnú sa načítaniu irelevantných údajov z databázy.
Existuje niekoľko spôsobov, ako filtrovať údaje vo volaní API. Najjednoduchšie je použiť parametre URL. Základné filtrovanie môžete vykonať filtrovaním názvov vlastností.
Parametre však môžu filtrovať iba presné zhody. Ak potrebujete poskytnúť zložitejšie zhody, budete musieť poskytnúť alternatívne metódy.
6. Použite bránu API
API brána môže poskytnúť vylepšenú bezpečnosť, monitorovanie a celkovú správu API. Slúži ako centrálny bod pre všetku prevádzku API. Brána je umiestnená medzi používateľmi a backendom aplikácie.
Brána API autorizuje a overuje prevádzku. Má tiež kontrolu nad tým, ako používate rozhrania API. Brána identifikuje zraniteľné miesta v sieti, komponentoch, ovládačoch a operačnom systéme.
Kamera Gateways hlási slabé miesta API a zisťuje porušenia údajov. Môžu tiež upozorniť na zraniteľné miesta a identifikovať miesta, kde je pravdepodobné, že sa vyskytnú bezpečnostné hrozby.
7. Zabráňte vstreknutiu kódu
Ochrana vášho API pred chybami vkladania kódu je životne dôležitá. Vloženie kódu zahŕňa prenos údajov do tlmočníka z nedôveryhodného zdroja. Môže to byť prostredníctvom príkazu alebo databázového dotazu.
Kybernetickí útočníci môžu odosielať škodlivé údaje, aby manipulovali s tlmočníkom API. Dáta môžu byť príkazy na manipuláciu so systémom. Rovnako môžu vyhľadávať citlivé údaje bez toho, aby museli prejsť potrebnou autorizáciou.
Zraniteľnosť rozhrania API, ako napríklad nesprávne overenie údajov, zvyšuje pravdepodobnosť útokov. Ako vývojár zvážte nasledujúce kontroly vo svojom kóde:
- Obmedzte počet povolených znakov, napríklad pomocou regulárnych výrazov.
- Majte štandardný formát údajov.
- Zadajte typ a množstvo očakávaných údajov.
Zabránenie vloženia kódu môže pomôcť vytvoriť spoľahlivý rámec kybernetickej bezpečnosti. Útočníci budú mať problém manipulovať alebo extrahovať údaje z vašej aplikácie.
Prečo zvážiť osvedčené postupy zabezpečenia API?
S rastúcim využívaním API sú kybernetické hrozby čoraz bežnejšie. Je dôležité monitorovať, testovať a spravovať vaše zabezpečenie API. Tento postup zaisťuje bezpečnosť vašich údajov a softvéru.
Mali by ste uprednostniť zabezpečenie API popri bezpečnostných opatreniach pre celú aplikáciu. Identifikujte zraniteľné miesta a riešte ich pomocou správnych bezpečnostných kontrol.
Využitím zabezpečenia API optimalizujete výkon vašej aplikácie. Pomáha identifikovať a zmierňovať narušenia bezpečnosti bez drahých nástrojov a softvéru. Identifikuje tiež slabé miesta systému, čím zabraňuje budúcim útokom.