GraphQL.cz/Fórum/Jaké jsou nejčastější bezpečnostní chyby u GraphQL a SQL?

Jaké jsou nejčastější bezpečnostní chyby u GraphQL a SQL?

Bezpečnostní otázky kolem databází a API technologií mě poslední dobou zajímají čím dál víc. Mám pocit, že s rostoucí popularitou GraphQL se objevují nové výzvy, které mohou ohrozit naše aplikace. Všichni víme, že SQL injekce je jedním z nejčastějších problémů u klasických SQL databází, ale co takhle GraphQL? Jaké jsou ty nejběžnější bezpečnostní díry, kterých bychom se měli vyvarovat? Zajímalo by mě, jestli někdo narazil třeba na problémy s autentifikací nebo autorizací při použití GraphQL, nebo jak se bránit proti nadměrnému dotazování, které může zatěžovat server. Také mě napadá, zda je nějaký rozdíl v přístupu k zabezpečení mezi REST a GraphQL, protože to se často zmiňuje. Jak je to s validací vstupů u GraphQL? Jsou tam nějaké specifické techniky nebo frameworky, které se doporučují používat? Na druhou stranu u SQL, jaké další slabiny kromě injekcí považujete za významné? Co třeba správa přístupových práv nebo špatné konfigurace serveru? Jaké máte zkušenosti s těmito problémy a jakým způsobem jste je řešili ve svých projektech? Děkuji předem za rady a tipy, protože jak říkáme v oboru – lepší prevence než léčba!

178 slov
1.8 minut čtení
18. 5. 2023
Věra Benešová

Bezpečnostní chyby u GraphQL a SQL jsou fakt zajímavý téma. U GraphQL je hodně problémů s autorizací a autentifikací, protože si můžeš udělat složité dotazy, což může vést k tomu, že uživatelé vidí data, co neměli. Je dobrý mít nějaký vrstvený přístup, třeba pomocí middleware pro ověřování. Pak je tu taky problém s nadměrným dotazováním – některý dotazy můžou zatěžovat server víc než jiný, tak se vyplatí omezit hloubku dotazu nebo použít nějaký limit.

U SQL je injekce jasná klasika a kromě toho se doporučuje dávat pozor na správu přístupových práv. Špatná konfigurace může znamenat, že se někdo dostane i k citlivým datům. Taky je důležitý dodržovat zásady minimalizace práv – uživatelé by měli mít jen ty oprávnění, který potřebujou.

A co se týče validace vstupů u GraphQL, tak je dobrý používat knihovny jako Joi nebo Yup, který ti pomůžou s typováním a validací dat. Myslím, že klíčový je prostě pořádně testovat a mít monitoring, abys zjistil potenciální problémy dřív, než se stanou vážnýma.

164 slov
1.6 minut čtení
11. 7. 2024
Emil Jedlička

Bezpečnost u GraphQL a SQL je fakt důležitá. U GraphQL jsou časté problémy s autorizací a autentifikací, protože můžeš dostat příliš moc dat, pokud nemáš správně nastavené kontrolní mechanismy. Taky se musíš mít na pozoru před nadměrným dotazováním; můžeš narazit na DDoS útoky nebo to zatíží server. Ochrana proti tomu může být třeba limitací hloubky dotazů nebo použitím nástrojů jako Apollo Server, který má zabudované mechanismy pro sledování a omezení.

Pak je tu problém s validací vstupů – je dobrý mít schémata a typy dobře definovaný, aby ses vyhnul nelogickým požadavkům a chybám při zpracování dat.

U SQL kromě injekcí si dej bacha na správu oprávnění – pokud dáš víc práv než je třeba, hrozí, že někdo udělá něco špatnýho. Špatná konfigurace serveru je taky častý problém, takže si dej pozor na defaultní nastavení a nezapomeň na šifrování dat a zálohy. Všechno to souvisí s tím mít systém dobře nastavený a pravidelně aktualizovaný.

Celkově se dá říct, že REST a GraphQL mají jiný bezpečnostní přístupy hlavně kvůli struktuře dotazů; u REST máš jasně dané endpointy, zatímco u GraphQL můžeš dotazovat různě. Takže to chce jinou strategii zabezpečení. Pořádně testuj a sleduj logy – to ti hodně pomůže v prevenci.

198 slov
2 minut čtení
14. 6. 2024
Denisa Hlaváčová

Bezpečnostní chyby u GraphQL a SQL jsou fakt na místě, o tom žádná. U SQL je klasika SQL injekce, ale další věci jako špatná správa uživatelských práv a špatná konfigurace serveru taky dost hrozej. Pokud nemáš dobře nastavený přístup, tak ti každej může zkusit házet dotazy, co mu napadne.

U GraphQL je to trochu jiný kafé. Často se setkávám s problémama s autorizací. Všichni chtějí mít detailní schema, ale pak zapomínají na to, že by měli omezit, co si kdo může vyžádat. To nadměrné dotazování (malicious queries) je taky bolest - někdy se na to používaj různé techniky throttlingu nebo caching. Jo a vstupy bych vždycky validoval, aby se zabránilo různým typům útoků.

Rozdíl mezi REST a GraphQL v zabezpečení je hlavně v tom, že s REST máš pevně daný endpoint, zatímco v GraphQL můžeš volat prakticky cokoliv a je tam větší prostor pro chyby.

Vždycky je lepší mít nějaký framework nebo knihovnu na validaci vstupů, třeba Apollo Server má docela dobré možnosti. Takže hlavně hlídat autentifikaci a autorizaci, validovat vstupy a dávat pozor na to, co všechno server povolí. Prevence je fakt klíčová.

183 slov
1.8 minut čtení
28. 10. 2024
Luboš Jedlička
GraphQL.cz/Články/GraphQL a SQL databáze
Bezpečnostní aspekty GraphQL při práci se SQL databázemiObjevte, jak zabezpečit vaše GraphQL API, které komunikuje se SQL databázemi, a posuňte úroveň bezpečnosti na novou. Přečtěte si přehled nejlepších pr...
1000 slov
10 minut čtení
7. 5. 2023
Ondřej Kučera
Přečíst článek
Podobné otázky