GraphQL.cz/Fórum/Jak se vyhnout logování hesel v GraphQL?

Jak se vyhnout logování hesel v GraphQL?

Nedávno jsem se začal více zajímat o GraphQL a jeho využití v aplikacích, ale narazil jsem na problém, který mě docela trápí. Často se mluví o bezpečnosti a ochraně dat, a to zejména když je řeč o citlivých informacích jako jsou uživatelská hesla. Přiznám se, že nevím, jak správně nastavit logování, aby se předešlo nechtěnému zachycení hesel nebo jiných citlivých údajů. Jakým způsobem by se dalo zajistit, že hesla nebudou logována při požadavcích na server? Je potřeba provádět nějaké speciální úpravy v middleware nebo ve způsobu, jakým zpracováváme dotazy? Jaké jsou nejlepší praktiky pro ochranu těchto dat při použití GraphQL? Je lepší například používat nějaké knihovny, které toto logování automaticky spravují, nebo bych měl implementovat vlastní řešení? Slyšel jsem také něco o možnostech filtrování informací v logech, ale nejsem si jistý, jak to přesně funguje. Rád bych znal názory a zkušenosti ostatních vývojářů, kteří se s tímto tématem již setkali. Jak jste to vyřešili ve vlastních projektech? A co doporučujete jako nejlepší přístup k zajištění bezpečnosti uživatelských dat v GraphQL?

170 slov
1.7 minut čtení
3. 3. 2022
Aleš Konečný

Když se bavíme o logování v GraphQL, hesla by měla být v každém případě chráněna. Nejlepší způsob, jak se vyhnout logování hesel, je vůbec je do logů neposílat. Můžeš to udělat třeba tak, že si vytvoříš middleware, který ti zpracovává dotazy a automaticky filtruje citlivé informace. Taky bys mohl použít nějakou knihovnu, která už tohle řeší, ale pokud chceš mít větší kontrolu, udělej si to sám.

Při logování se zaměř na strukturované logy a ujišťuj se, že neukládáš kompletní inputy od uživatelů, nebo aspoň ne ty, co obsahují hesla. Místo toho můžeš logovat jen metadata jako je ID uživatele nebo čas požadavku.

Další možností je nastavit si filtry v logovacích nástrojích, abys automaticky odstranil citlivé údaje z logů, ale to může být náročné a občas nefunkční. Takže radši si to ohlídej hned při zpracování dat. Důležité je mít všechno dobře zdokumentované a vědět, co kde loguješ. Ochrana uživatelských dat v GraphQL by měla být prioritou.

155 slov
1.6 minut čtení
8. 4. 2021
Natálie Hrušková

Když chceš zabránit logování hesel v GraphQL, je dobrý zamyslet se nad tím, jak je to u tebe nastavený. Většina frameworků pro GraphQL má nějaký middleware, kde můžeš nastavit, co se bude logovat a co ne. Zkus třeba filtrovat požadavky už v middleware, abys nezaznamenával citlivý informace.

Další možností je použít knihovny na logování, které umějí vynechat citlivý data. Například Winston nebo bunyan ti umožní přizpůsobit si, co chceš logovat. Můžeš si udělat vlastní filtry na konkrétní pole jako hesla.

Je taky fajn mít nějakou úroveň validace, než se data dostanou do logu – třeba před logováním zkontroluj, jestli pole obsahuje heslo a pokud jo, tak ho prostě ignoruj.

A nezapomeň mít dobrý zabezpečení kolem API, aby ses vyhnul i jiným problémům. Dodržuj základní bezpečnostní opatření jako šifrování hesel v databázi a používej HTTPS. Když se o to postaráš hned na začátku, ušetříš si pak spoustu starostí.

146 slov
1.5 minut čtení
2. 9. 2023
Aleš Konečný

Existuje několik způsobů, jak se vyhnout logování hesel v GraphQL. První věc, co můžeš udělat, je zajistit, aby se citlivé údaje nikdy neměly logovat na úrovni middleware. Můžeš si napsat vlastní middleware, který bude kontrolovat obsah těla požadavku a vynechávat logování, pokud narazí na pole jako "password" nebo "token".

Další možností je použít knihovny pro logování, které už umí filtraci citlivých dat. Tím se ti to zjednoduší. Při definici schématu GraphQL můžeš také omezit, co všechno se vrací jako odpověď – třeba nezobrazovat hesla v odpovědích na dotazy.

Důležité je mít na paměti i to, že kvalitní logy pomáhají s debuggováním, takže bys měl mít nějakou strategii na třídění a filtraci dat, abys viděl jen to potřebné. Taky je dobrý mít nějaké automatizované testy, které ověří, že se citlivý data nelogují.

Celkovej přístup by měl být takovej, že už na začátku při návrhu API myslíš na bezpečnost a logování. Když programuješ, přemýšlej nad tím, co všechno by mohlo být citlivý a snaž se to nějak vyfiltrovat nebo zamaskovat. Takže jo, hraj si s tím a zkoušej tyhle techniky.

176 slov
1.8 minut čtení
3. 9. 2022
Elena Brožová
GraphQL.cz/Články/Logování API aktivit
Logování citlivých informací v GraphQL: Jak na to bezpečně?Článek se zabývá bezpečným logováním citlivých informací v GraphQL aplikacích, poskytuje tipy a strategie pro zajištění ochrany uživatelských dat v so...
1000 slov
10 minut čtení
5. 5. 2020
Tereza Horáková
Přečíst článek
Podobné otázky