GraphQL.cz/Fórum/Osnovy HMAC pro zabezpečení GraphQL API

Osnovy HMAC pro zabezpečení GraphQL API

Zajímalo by mě, jaké jsou vlastně nejlepší praktiky pro využití HMAC při zabezpečení mých GraphQL API. Slyšel jsem, že HMAC může poskytnout zvýšenou úroveň zabezpečení, ale rád bych se dozvěděl víc o tom, jak to funguje. Jakým způsobem bych mohl implementovat HMAC do svého projektu? Jaké klíče a algoritmy by měly být použity? Existují nějaké osvědčené postupy nebo vzory, které bych měl dodržovat, abych zajistil, že moje API zůstane bezpečné? Zajímalo by mě také, jak lze HMAC kombinovat s dalšími bezpečnostními opatřeními, jako je třeba autentizace a autorizace uživatelů. Mohli byste mi doporučit nějaké zdroje nebo články, které by mi pomohly lépe pochopit tuto problematiku? Děkuji předem za vaše rady!

110 slov
1.1 minut čtení
8. 7. 2023
Bohumil Košťál

HMAC (Hash-based Message Authentication Code) je fajn způsob, jak zabezpečit tvoje GraphQL API. V podstatě to funguje tak, že vezmeš nějaký klíč a zprávu, a pak to všechno zahashuješ pomocí nějakého algoritmu jako SHA-256. Tím vznikne unikátní otisk, který můžeš poslat s požadavkem. Když server dostane požadavek, vezme zprávu a klíč a znovu to hashuje, aby zjistil, jestli se otisk shoduje. Pokud jo, můžeš si být celkem jistý, že zpráva nebyla pozměněna.

Co se týče implementace, měl bys použít silný tajný klíč (ne třeba něco jako "12345") a držet ho v tajnosti. Doporučuje se používat HMAC s SHA-256 nebo silnějšími algoritmy. Důležité je taky zajistit, aby klíč nebyl vyzrazen, třeba ukládat ho do environmentálních proměnných nebo bezpečných úložišť.

Když to dáš dohromady s autentizací a autorizací (třeba JWT), budeš mít solidní ochranu. Můžeš třeba posílat HMAC jako součást hlavičky HTTP spolu s tokenem uživatele. Tím pádem zaručíš nejen, že je uživatel autentizovaný, ale i že zpráva nebyla pozměněná.

Pokud chceš víc informací, koukni na oficiální dokumentaci k HMAC a bezpečnostní best practices pro API. Někde jsem taky viděl články o kombinaci HMAC s OAuth2 - to by mohlo být užitečný.

187 slov
1.9 minut čtení
14. 11. 2022
Tereza Khýrová

HMAC (Hash-based Message Authentication Code) je fakt skvělý pro zabezpečení API. V podstatě to funguje tak, že vezmeš svůj payload (třeba data, co posíláš v GraphQL dotazu) a podepíšeš ho pomocí tajného klíče a hashovací funkce. Tím vytvoříš HMAC, což je pak jakýsi otisk toho, co jsi poslal. Když dostaneš zpátky odpověď, můžeš si ověřit, že nikdo nezmanipuloval s daty.

Pro implementaci doporučuji použít SHA-256 jako hashovací algoritmus, je bezpečný a rozšířeně podporovaný. Klíč by měl být dostatečně dlouhý – aspoň 256 bitů, aby se minimalizovala možnost útoků.

Co se týče praktik, tak klidně kombinuj HMAC s JWT (JSON Web Tokens) pro autentizaci uživatelů. HMAC ti zaručí integritu dat a JWT můžeš použít pro autorizaci uživatelů. Obecně platí, že bys měl klíče pravidelně rotovat a nikdy je nesdílet veřejně.

K tomu najdeš spoustu článků online, zkus třeba OWASP nebo různé blogy zaměřené na bezpečnost API. Měj na paměti i další věci jako HTTPS pro šifrování přenosu.

153 slov
1.5 minut čtení
5. 8. 2023
Viktor Daněk

HMAC je fajn způsob, jak zabezpečit tvoje GraphQL API. Funguje to tak, že se používá tajný klíč a hashovací algoritmus (třeba SHA256), aby se vytvořila kontrolní suma pro zprávy. Když klient odešle požadavek, server si spočítá HMAC na základě obsahu požadavku a porovná ho s tím, co poslal klient. Pokud to sedí, je to v pohodě.

K implementaci doporučuji mít tajný klíč uložený bezpečně a neodhalovat ho nikde v kódu. Klíč by měl být dostatečně dlouhý a komplexní, aby se nedal lehce uhádnout. Co se týče algoritmů, SHA256 je dobrá volba, ale můžeš zkusit i SHA512 pro vyšší zabezpečení.

Ověření HMAC můžeš zkombinovat s autentizací uživatelů (např. pomocí JWT) a autorizací (kontrola, zda má uživatel povolení k dané akci). Je důležité mít i HTTPS pro šifrování přenosu dat.

Doporučil bych projít nějaké články o zabezpečení API obecně a třeba i nějaké tutoriály na HMAC. Je toho spousta na GitHubu nebo Mediumu. Taky se mrkni na dokumentaci k OAuth2, to můžeš použít ve spojení s HMAC pro solidní ochranu.

165 slov
1.7 minut čtení
1. 4. 2022
Ivana Jarošová
GraphQL.cz/Články/Autentizace v GraphQL
Zabezpečení API pomocí HMAC v GraphQLJak používat HMAC (Hash-based Message Authentication Code) k posílení bezpečnosti vašeho GraphQL API. Praktické tipy a triky pro vývojáře i laiky.
1000 slov
10 minut čtení
16. 10. 2021
Markéta Svobodová
Přečíst článek
Podobné otázky