Webové rozhraní pro programování aplikací (Api) poskytují back-end pro moderní webové a mobilní aplikace. Volání webového rozhraní API představuje více než 80% veškerého webového provozu a počítačoví zločinci stále více cílí na API, takže zajištění bezpečnosti webového rozhraní API je zásadní. REST API jsou nejběžnějším typem webového API pro webové služby. Podívejme se, co můžete udělat pro zajištění bezpečnosti REST API.
- co je REST API?
- dvě úrovně zabezpečení REST API
- Zajištění Bezpečné API Přístup
- zabezpečení připojení
- řízení přístupu API
- autorizace uživatele pomocí API klíčů
- omezení klienta API
- ochrana aplikací, které vystavují rozhraní API
- citlivá Data v komunikaci API
- ověření typu obsahu
- záhlaví zabezpečení odpovědí
- ověření vstupu
- proč je zabezpečení REST API důležité
- O Autorovi
co je REST API?
REST (zkratka pro REpresentational State Transfer) je styl softwarové architektury pro vývoj webových aplikací, obvykle používaný s HTTP komunikací. RESTful API (nebo jednoduše REST API) jsou rozhraní pro programování aplikací, která se řídí principy REST a umožňují webovým klientům a serverům komunikovat s velkým množstvím webových zdrojů. REST API používají standardní HTTP slovesa (metody) a stavové kódy k zajištění určité úrovně standardizace. Jsou přístupné přes HTTP adresy URL a jsou široce používány pro webové služby.
Poznámka: REST API jsou bez státní příslušnosti jako samotný protokol HTTP, což znamená, že neukládají žádné informace o aktuálních připojeních nebo relacích. Webové služby RESTful poskytují způsoby přístupu a manipulace se zdroji, zatímco správa relací by měla být zpracována aplikací.
dvě úrovně zabezpečení REST API
než se dostaneme do technických detailů, je třeba si uvědomit jednu důležitou věc. Webové rozhraní API vystavuje rozhraní webové aplikaci, takže musíte přemýšlet o zabezpečení na dvou úrovních: přístup k API a poté přístup k aplikaci.
na úrovni API potřebujete správné ověření, autorizaci, přístupová oprávnění atd., Abyste zajistili, že rozhraní mohou používat pouze povolení klienti a provádět pouze povolené operace. Na úrovni aplikace, musíte zajistit, že vaše aplikace koncové body (Url používané pro přístup k rozhraní), nejsou náchylné k útokům, které se dostanou přes rozhraní nebo obejít.
podívejme se, jak můžete zajistit zabezpečení REST API na těchto dvou úrovních. Pro podrobnou diskusi o osvědčených postupech zabezpečení API, viz OWASP REST Security Cheat Sheet.
Zajištění Bezpečné API Přístup
Většina webových rozhraní Api jsou vystaveny na Internetu, takže potřebují vhodné bezpečnostní mechanismy, aby se zabránilo zneužívání, chránit citlivá data, a zajistit, že pouze ověřené a autorizované uživatelé mohou přístup k nim.
zabezpečení připojení
zabezpečení začíná samotným připojením HTTP. Secure REST API by měla poskytovat pouze koncové body HTTPS, aby bylo zajištěno, že veškerá komunikace API je šifrována pomocí SSL/TLS. To umožňuje klientům ověřit službu a chrání pověření API a přenášená data.
řízení přístupu API
mnoho webových rozhraní API je k dispozici pouze ověřeným uživatelům, například proto, že jsou soukromá nebo vyžadují registraci nebo platbu. Protože rozhraní REST API jsou bez státní příslušnosti, řízení přístupu je řešeno lokálními koncovými body. Nejběžnější metody ověřování REST API jsou:
- HTTP Basic Authentication: přihlašovací údaje jsou odesílány přímo v hlavičkách HTTP v kódování Base64 bez šifrování. Jedná se o nejjednodušší metodu ověřování a nejjednodušší implementaci. Je to také nejméně bezpečné, protože důvěrná data jsou přenášena jako prostý text,takže by měla být použita pouze v kombinaci s HTTPS.
- JSON Web Tokens (JWT): přihlašovací údaje a další parametry přístupu jsou odesílány jako datové struktury JSON. Tyto přístupové tokeny mohou být podepsány Kryptograficky a jsou preferovaným způsobem řízení přístupu k REST API. Podívejte se na OWASP JWT Cheat Sheet pro rychlý přehled webových tokenů JSON, a RFC 7519 pro úplnou specifikaci.
- OAuth: pro autentizaci a autorizaci lze použít standardní mechanismy OAuth 2.0. OpenID Connect umožňuje bezpečnou autentizaci přes OAuth 2.0. Například rozhraní API společnosti Google používají OAuth 2.0 pro ověřování a autorizaci.
autorizace uživatele pomocí API klíčů
API klíče poskytují způsob řízení přístupu k veřejným službám REST. Provozovatelé veřejných webových služeb mohou pomocí klíčů API vynutit omezení sazeb pro volání API a zmírnit útoky odmítnutí služby. Pro zpeněžené služby mohou organizace používat klíče API k poskytování přístupu na základě zakoupeného plánu přístupu.
omezení klienta API
aby se minimalizovala bezpečnostní rizika, provozovatelé služeb REST by měli omezit připojení klientů na minimální možnosti požadované pro službu. To začíná s omezením podporované HTTP metody, aby se ujistil, že chybně nebo škodlivým klienti nemohou provádět žádné akce mimo specifikaci API a přístup na úrovni. Například, pokud API umožňuje pouze GET požadavky, POST a další typy požadavků by měly být odmítnuty s kódem odpovědi 405 Metoda není povolena.
ochrana aplikací, které vystavují rozhraní API
jakmile má klient legitimní přístup, musíte chránit základní webovou aplikaci před poškozenými a škodlivými vstupy. Volání a odpovědi REST API mohou také zahrnovat důvěrná data, která je třeba kontrolovat.
citlivá Data v komunikaci API
volání API často zahrnují pověření, klíče API, tokeny relace a další citlivé informace. Pokud jsou tyto údaje zahrnuty přímo do adres URL, mohly by být uloženy v protokolech webového serveru a unikly, pokud k nim přistupují počítačoví zločinci. Aby nedošlo k úniku důvěrných informací, měly by webové služby RESTful vždy zasílat v hlavičkách požadavků HTTP nebo v těle požadavku (pro požadavky POST a PUT).
ověření typu obsahu
pokračováním tématu omezení klienta API by služby REST měly přesně definovat povolené typy obsahu a odmítnout požadavky, které nemají správná prohlášení v hlavičkách HTTP. To znamená pečlivě specifikovat povolené typy jak v záhlaví Content-Type
, tak v záhlaví Accept
spolu s znakovou sadou (pokud je to možné). Pokud služba obsahuje JavaScript (nebo jiný kód skriptu), měla by zajistit, aby typ obsahu v záhlaví byl stejný jako v těle požadavku, například application/javascript
. To pomáhá předcházet útokům injekce záhlaví.
záhlaví zabezpečení odpovědí
další záhlaví zabezpečení HTTP lze nastavit tak, aby dále omezovaly typ a rozsah požadavků. Mezi ně patří X-Content-Type-Options: nosniff
, aby se zabránilo útokům XSS na základě MIME sniffing a X-Frame-Options: deny
, aby se zabránilo pokusům o clickjacking ve starších prohlížečích.
pokud služba nepodporuje volání mezi doménami, měla by zakázat CORS (sdílení zdrojů cross-origin) v hlavičkách odpovědí. Pokud se taková volání očekávají, záhlaví CORS by měla přesně specifikovat povolený původ.
ověření vstupu
API jsou navržena pro automatizovaný přístup bez interakce uživatele, takže je obzvláště důležité zajistit, aby všechny vstupy byly platné a očekávané. Všechny požadavky, které neodpovídají specifikaci API, musí být zamítnuty. Platí typické pokyny pro osvědčené postupy pro ověření vstupu:
- považujte všechny parametry, objekty a další vstupní data za nedůvěryhodné.
- použijte vestavěnou validační funkci, pokud je k dispozici.
- zkontrolujte velikost požadavku a délku a typ obsahu.
- Použijte silné psaní pro parametry API (pokud je podporováno).
- Chcete-li zabránit SQL injection, vyhněte se vytváření dotazů ručně – místo toho použijte parametrizované dotazy.
- Whitelist hodnoty parametrů a string vstupy všude tam, kde je to možné.
- Zaznamenejte všechna selhání ověření vstupu, abyste zjistili pokusy o plnění pověření.
proč je zabezpečení REST API důležité
webová rozhraní API jsou páteří moderního vývoje webu a mobilních zařízení. Umožňují aplikacím a službám komunikovat a vyměňovat si data napříč hardwarovými a softwarovými platformami. Zatímco jiné formáty API jsou také stále používány (například SOAP), REST API jsou nyní dominantním typem, což představuje více než 80% všech veřejných webových API. Poskytují back-end pro většinu mobilních aplikací a zařízení IoT a umožňují snadnou integraci mezi systémy a aplikacemi.
protože používají stejné technologie jako webové aplikace, REST API mohou být zranitelné vůči stejným útokům. Současně nejsou API navržena pro ruční přístup, takže je lze obtížně testovat, zejména pokud jsou některé koncové body a funkce nezdokumentovány. Testování zabezpečení API vyžaduje přesné automatizované nástroje k zajištění úplného pokrytí. Netsparker poskytuje plnou podporu pro skenování zranitelností REST API s různými metodami ověřování a automatickým přepisováním URL.
kompletní technické podrobnosti najdete v dokumentaci testovacího webu Netsparker REST API a přečtěte si celý článek o skenování REST API pro zranitelnosti s Netsparkerem.
O Autorovi
Technický Obsah Spisovatel na Netsparker. Na základě svých zkušeností jako novinář v oblasti IT a technický překladatel se snaží přinést bezpečnost webu širšímu publiku na blogu a webu Netsparker.