etechblog

19 Nejlepších postupů zabezpečení API k implementaci a zachování bezpečnosti

Zabezpečení API je jedním z nejdůležitějších aspektů, o které se musíte starat téměř v každé aplikaci.

V dnešní době jsou API nejlepším způsobem, jak integrovat vaši aplikaci s jinými aplikacemi. Poskytují bránu do vaší aplikace, a proto musí být API dostatečně bezpečná, abyste nedostali žádné nežádoucí návštěvníky.

Podívejme se na některé zranitelnosti API, které mohou být hrozbou pro vaši aplikaci.

Běžné zranitelnosti API

#1. Skriptování mezi weby (XSS)

Útoky XSS jsou běžné ve webových aplikacích, ale mohou se také vyskytnout prostřednictvím rozhraní API, pokud nejsou příchozí uživatelská data řádně vyčištěna. Útočníci mohou na serveru spouštět škodlivé skripty a získat přístup k citlivým datům.

#2. Porušení omezení sazby

Porušení funkce API omezující rychlost může dát útočníkům šanci bombardovat váš server velkým množstvím požadavků. Nakonec může dojít k selhání serveru a vaše zákaznická základna může mít problém vás kontaktovat.

#3. Nesprávné ověření

Pokud není rozhraní API správně nakonfigurováno pomocí spolehlivé metody ověřování, může k vašemu systému prostřednictvím rozhraní API přistupovat jakákoli třetí strana. Autorizace je také důležitá, protože definuje, kdo může přistupovat ke kterému prostředku API až do stanovené doby.

#4. Nezabezpečený přenos dat

Data, která se odesílají spotřebitelům vašeho API, musí být na cestě zašifrována. Pokud tomu tak není, existuje šance, že data mohou uniknout útočníkům pomocí útoku typu man-in-the-middle. Proto se vždy doporučuje používat k přenosu dat zabezpečený protokol, jako je HTTPS.

#5. Zastaralé/zastaralé závislosti

Rozhraní API mají spoustu externích závislostí, které se používají k provádění složitých úkolů a ke snížení zátěže nějaké složité logiky. Pokud tyto závislosti mají zranitelnost, pak se nepřímo stane zranitelným i vaše API. Vždy se ujistěte, že aktualizujete verze závislostí.

Nyní, když znáte zranitelnosti API, pojďme se podívat na některé osvědčené postupy pro zabezpečení vašeho API.

Čtěte také: Nejlepší alternativy Postman k testování API pro vývojáře

Zabezpečení API – osvědčené postupy

Verze API

Je důležité pravidelně monitorovat a aktualizovat vaše rozhraní API pomocí aktualizovaných závislostí, protože tyto závislosti mohou obsahovat velká zranitelnost. Uživatele API můžete upozornit vydáním opravné verze API podle sémantické verzování.

  Jak zrušit schůzku v Microsoft Teams

Udržovat vaše API aktuální je to nejmenší, co můžete udělat, abyste zabránili jeho zneužití útočníky.

Autentizace

Existuje mnoho způsobů, jak ověřit uživatele API. Nejjednodušší způsob je použít přístup uživatelské jméno/heslo, ale to je příliš jednoduché a spoléhá se pouze na to, jak silné je heslo.

Dalším způsobem je použití API klíčů pro přístup k API. Každému uživateli rozhraní API můžete poskytnout jedinečný klíč, který může používat.

Ověřování JWT je technika, při které jsou přihlašovací údaje uživatele převedeny na digitálně podepsaný token a poté odeslány uživateli. Uživatel pak pošle stejný token zpět na každý požadavek na server, aby jej server ověřil. JWT mají také dobu expirace.

Nejúčinnějším řešením je OAuth. Umožňuje přístup třetích stran k API s již existujícími přihlašovacími údaji. Pokud jste například již přihlášeni do Googlu, aplikace může tyto přihlašovací údaje použít k přihlášení k vašemu účtu, aniž by potřebovala heslo. Váš účet Google se stane heslem.

Oprávnění

Autorizace je něco jiného než autentizace. Zatímco autorizujete uživatele, je již autentizován pro použití vašeho API a jde jen o to, ke kterému prostředku API má přístup.

Například univerzitní profesor může mít přístup ke všem studentům v dávce, ale jeden student má přístup pouze k jejich datům. V tomto případě jsou student a profesor autentizováni do stejného systému, ale jsou oprávněni provádět pouze určité akce.

Zajištění správného fungování autorizace API může zabránit neoprávněnému přístupu ke zdroji.

Redakce dat

Redakce dat je proces selektivního odhalování informací uživatelům a ochrany citlivých informací. Správná autorizace může vést k lepší úpravě dat. Nařízení o ochraně osobních údajů, jako je GDPR, jsou také založeny na úpravě údajů. Jakákoli nechtěná třetí strana by neměla mít možnost nahlédnout do osobních nebo citlivých údajů.

Reakce na data můžete implementovat implementací middlewaru nebo správce brány.

Šifrování

To se stalo nejdůležitější bezpečnostní kontrolou v dnešním světě. Šifrování je nutností, pokud pracujete s jakýmikoli citlivými informacemi. Nejmenší šifrování, které můžete udělat, je použití protokolu HTTPS, který používá handshake TLS (Transport Layer Security) a SSL (Secure Socket Layer).

End-to-end šifrování je další způsob, jak pevně zabezpečit data při přenosu. Data uložená v databázi by také měla být šifrována pro případ, že by se útočníkovi podařilo proniknout do databáze a získat přístup k datům.

Vypořádání se s chybou

Informace o infrastruktuře aplikace mohou útočníkům uniknout prostřednictvím podrobných chybových zpráv. Abyste tomu zabránili, ponechte chybové zprávy obecné a implementujte vlastní zpracování chyb. Ujistěte se, že do podrobností o chybě nejsou protokolovány žádné citlivé systémové informace.

  Oprava selhala při inicializaci služby BattlEye Obecná chyba

Ověření vstupu a dezinfekce dat

Ověření vstupu je velmi důležité při práci s rozhraními API, protože vstup neznáte, dokud jej uživatel neodešle.

Sanitizace je proces odstranění jakéhokoli nežádoucího spustitelného kódu z užitečného obsahu. Útočník může vložit skript Javascript, a pokud jej před předáním do kódu HTML nevyčistíte, spustí se jako skript a načte data.

Nesprávná dezinfekce může vést k útokům Cross-site scripting (XSS).

Systémy detekce narušení

Systémy detekce narušení, známé také jako IDS, pomáhají při monitorování a zjišťování síťového provozu přicházejícího do API. Pokud zjistí nějaké neobvyklé chování v provozu, může se přihlásit a upozornit dotčené orgány.

Obecně existují dva typy systémů: síťový a hostitelský. V systémech založených na síti je systém distribuován mezi různé kontrolní body pro monitorování provozu na více bodech. V hostitelském systému je nasazen na jediném hostiteli.

Takové systémy jsou skvělým způsobem, jak zjistit, kdo se pokouší získat přístup k vaší síti, než budou bránit vašim datům.

Seznam povolených IP adres

Seznam povolených IP adres je způsob, jak umožnit pouze vybraným IP adresám přístup k vašemu API a vaší síti. Tato technika nemusí fungovat, pokud máte veřejné rozhraní API, protože je příliš složité na to, aby vypsalo všechny adresy IP.

Je výhodné, pokud víte, že k vašemu API budou přistupovat pouze některé aplikace systémů.

Webové tokeny JSON

JWT se obecně používají k ověření uživatele zasláním digitálně podepsaného tokenu vytvořeného z jeho přihlašovacích údajů. Funguje to, protože skrývá skutečné přihlašovací údaje uživatele a také nemusíte ukládat přihlašovací údaje v databázi nebo na straně uživatele.

JWT lze rozdělit do tří částí: záhlaví, užitečné zatížení a podpis. Sekce užitečného zatížení obsahuje přihlašovací údaje uživatele a záhlaví může obsahovat informace, jako je použitý algoritmus. Sekce podpisu je digitálně podepsána serverem a klientem při každém dalším požadavku.

JWT mají obecně datum vypršení platnosti, po kterém je serverem vygenerován nový token a poté odeslán uživateli.

Logování a monitorování

Sledování návštěvnosti vašeho API může být užitečné pro detekci a identifikaci nežádoucích návštěvníků předem. Můžete sledovat každý požadavek, ale ujistěte se, že protokoly neobsahují žádné citlivé informace.

Omezení sazby

Pokud rozhraní API neimplementuje omezení rychlosti, je zranitelné vůči útokům DDoS kvůli neočekávanému přílivu síťového provozu. Útočníci mohou zaplavit systém velkým množstvím požadavků v krátkém čase a nakonec zhroutí server.

Rozhraní API s omezením a omezením rychlosti zabraňují útokům typu denial-of-service omezením toku provozu API.

Zabezpečené závislosti

Chyby zabezpečení nevycházejí pouze z vašeho kódu API, mohou být také součástí jakýchkoli závislostí třetích stran, které můžete ve svém rozhraní API používat. Proto je důležité pravidelně sledovat a skenovat své závislosti a odhalovat případné zranitelnosti, které se v nich mohou vyskytovat.

  Konfigurace UTF-8 v WebSphere, WebLogic, Tomcat, TC Server, JBoss

Můžete implementovat naplánovanou úlohu pro pravidelné skenování a aktualizaci závislostí, pokud je lze aktualizovat pomocí verze opravy opravující zranitelnost. Vybírejte také závislosti, které jsou bezpečnější a poskytují časté aktualizace zabezpečení.

Záhlaví zabezpečení by měla být vrácena s odpovědí rozhraní API, aby byl prohlížeč poučen o zabezpečení rozhraní API a o tom, jak by měl jednat. Důležité hlavičky, které můžete odeslat ke zlepšení zabezpečení, jsou:

  • Cache-Control: Nastavte jej na no-store, abyste se vyhnuli ukládání citlivých informací v prohlížeči.
  • Zásady zabezpečení obsahu: Nastavení na předchůdce rámců „žádné“ zabrání rámování odpovědí rozhraní API v prvku iframe.
  • Content-Type: Tato hlavička je důležitá, protože bez ní se prohlížeč snaží uhodnout typ odpovědi API, což může vést k útokům typu sniffing. Pro odpověď JSON ji můžete nastavit na application/json.
  • X-Content-Type-Options: Nastavte jej na nosniff, abyste instruovali prohlížeč, aby nehádal MIME typ odpovědi a hledal jej pouze v záhlaví Content-Type.

Bezpečnostní standardy a rámce

Navrhněte své API s pomocí předdefinovaných bezpečnostních standardů a rámců, abyste zajistili, že vaše API bude aktuální s nejnovějšími bezpečnostními aspekty.

Vypršení platnosti tokenu

Pokud používáte tokeny nosiče, doba vypršení platnosti tokenu by měla být krátkodobá, protože vyžaduje opětovné ověření uživatele, což je dobrá věc. V JWT jsou obvykle dva tokeny: přístupové a obnovovací tokeny. Obnovovací tokeny mají dlouhou životnost, zatímco přístupové tokeny mají krátkou životnost. V každém případě by vaše tokeny měly mít dobu platnosti.

Firewall webových aplikací

WAF, neboli Web Application Firewall, je brána, která monitoruje, filtruje a blokuje jakýkoli škodlivý síťový provoz. Často je to nejlepší způsob, jak zabránit škodlivým útokům prostřednictvím protokolu HTTP.

Použití brány API

Pokud chcete snadno nastavit zabezpečení API a spravovat trasy API a jejich přístup, můžete použít brány API. Poskytují také nástroje pro monitorování, protokolování a analýzu, které můžete použít ke sledování svého rozhraní API.

Nulová důvěra

Myšlenkou strategie nulové důvěry je nedůvěřovat žádnému centralizovanému zdroji. Zabezpečení by mělo být vrstvené a implementované na více kontrolních bodech.

V podstatě nelze věřit nikomu, dokonce ani vývojářům pracujícím na API. Každá brána by měla být monitorována a analyzována, aby se zabránilo narušení bezpečnosti.

V takových případech přijde vhod automatizace. Pomocí automatických nástrojů můžete pravidelně sledovat a blokovat neobvyklou nebo podezřelou aktivitu.

Závěrečná slova

Pro zabezpečení svých rozhraní API můžete udělat jen tolik. V softwaru se vždy najdou nějaké mezery, které lze zneužít. Takové mezery vedou ke zranitelnosti zero-day. Chcete-li tedy zabezpečit svá rozhraní API, to nejmenší, co můžete udělat, je aktualizovat je podle nejnovějších bezpečnostních standardů.

Podívejte se na nejlepší nástroje pro dynamické testování zabezpečení aplikací.

x