Jak se bránit SQL injection ve webových aplikacích
| [unchecked revision] | [unchecked revision] |
(Created page with "Praktické kroky: od záměru k licenci Začněte tím, že si sepíšete, jaké použití chcete povolit a jaké zakázat. Například pokud vyvíjíte serverovou aplikaci, zvažte AGPL, která pokrývá i síťové nasazení. U knihoven, které mají sloužit jako stavební bloky v jiných projektech, je vhodnější LGPL – ta umožňuje dynamické linkování bez povinnosti šířit celý projekt. Pro malé nástroje a skripty postačí permisivní licence, která e...") |
No edit summary |
||
| Line 1: | Line 1: | ||
Kromě testů využijte i nástroj pro automatizaci – kolekce runner. Spustíte celou kolekci najednou a sledujete výsledky. To se hodí při regresním testování po změně API. Runner umožňuje nastavit počet opakování a zpoždění mezi požadavky. Nezapomeňte na proměnné – pokud testujete sekvenci požadavků, kde jeden závisí na odpovědi předchozího, použijte skripty v sekci Tests pro uložení hodnoty do proměnné. Příklad: pm.environment.set("token", pm.response.json().token).<br><br>Při testování na reálných zařízeních se zaměřte na spotřebu baterie a přehřívání. To jsou aspekty, které automatizované testy na emulátoru neodhalí. Mějte po ruce několik fyzických zařízení, a to jak s operačním systémem od jednoho výrobce, tak i od jiného, protože každý systém má svá specifika. Pro uživatelské testování oslovte lidi, kteří aplikaci neznají, a sledujte, jak ji používají. Často zjistíte, že to, co je pro vás intuitivní, uživatelé dělají úplně jinak.<br><br>Časté chyby a jak je odstranit Jednou z typických chyb je dynamické sestavování dotazů pomocí řetězců, zejména když potřebujete řadit podle sloupce zvoleného uživatelem. Pokud uživatel může ovlivnit název sloupce nebo směr řazení, parametrizace nepomůže. V takovém případě vždy použijte seznam povolených hodnot, který ověří, že zadaný řetězec odpovídá skutečnému názvu sloupce. Druhou častou chybou je zapomínání na vstupy vstupující do LIKE, IN nebo ORDER BY klauzulí. I zde platí, že místo přímého vkládání vstupu použijte placeholder a pro dynamické části aplikujte whitelist.<br><br>Začněte tím, že si pečlivě naplánujete testovací scénáře. Nezapomeňte na okrajové případy, jako je přerušení připojení, příchod notifikace nebo volání během používání aplikace. Typickou chybou je testovat pouze na nejnovějším zařízení s nejnovější verzí systému. V praxi se ale většina uživatelů pohybuje na starších modelech, a proto je důležité mít k dispozici zařízení s různými verzemi operačního systému, nebo využít cloudové služby pro testování na vzdálených zařízeních.<br><br>NoSQL není jeden nástroj, ale rodina databází, které se liší datovým modelem. Existují dokumentové (JSON), sloupcové, klíč-hodnota a grafové. Každý typ řeší jiné problémy. Dokumentové databáze se hodí pro obsahově heterogenní záznamy, které byste v SQL řetězili přes deset JOINů. Sloupcové jsou vhodné pro analytiku nad obrovskými tabulkami, kde čtete jen vybrané sloupce. Klíč-hodnota je extrémně rychlá pro jednoduché operace, a grafové databáze zase skvěle modelují vztahy – typicky sociální sítě, doporučovací systémy nebo řízení práv.<br><br>Častým omylem je domněnka, že NoSQL je automaticky rychlejší. Rychlost závisí na případu použití a na tom, jak dobře je datový model navržený. Vezměte si příklad streamování událostí – logy, telemetrie. Sloupcová databáze je pro zápis mnohem rychlejší než klasická SQL, ale pokud potřebujete dotazovat se podle vztahů mezi entitami, budete psát složité agregační operace, které v SQL zvládnete jedním JOINem. Také si dejte pozor na to, jak NoSQL řeší rozšiřování. Většina z nich podporuje horizontální škálování – přidávání dalších uzlů – ale to s sebou nese problémy s distribucí dat, např. rozdělení na shardy. Bez promyšlené distribuční strategie vám může docházet k tomu, že dotaz musí prohledat všechny uzly, což je pomalé a nákladné.<br><br>Mezi nejčastější chyby patří zapomenutí na hlavičky, nesprávný formát těla požadavku nebo neuvědomění si rozdílu mezi GET a POST. U POST vždy nastavte hlavičku Content-Type na application/json a tělo zadejte v surovém formátu. Dále pozor na citlivé údaje – nikdy neukládejte hesla do proměnných, které sdílíte s týmem. Pro citlivá data použijte proměnné s hodnotami, které se nenačítají ze souboru. Postman je mocný nástroj, ale vyžaduje disciplínu. Pokud se naučíte strukturovat kolekce, používat proměnné a psát smysluplné testy, ušetříte si spoustu času a předejdete chybám v produkci.<br><br>Proměnné a prostředí – klíč k efektivnímu testování Pevně zadané adresy a hodnoty brzy znepřehlední práci. Proto používejte proměnné. V Postmanu je definujete buď globálně, nebo v rámci prostředí. Prostředí představuje sadu proměnných pro konkrétní prostředí – testovací, produkční. Adresu pak zapíšete jako baseUrl a hodnotu přiřadíte v nastavení. Stejně postupujte u přihlašovacích tokenů, které se mění při každém běhu testu.<br><br>Scrum není o tom, že budete dělat víc věcí za kratší dobu. Je o tom, že budete dělat ty správné věci a budete mít zpětnou vazbu dřív. Pro české týmy je klíčové, aby si ujasnily role, definici hotového a hlavně aby se nebály říct managementu, že něco nestihnou. Začněte malým pilotním projektem, ne celou organizací. Až uvidíte první výsledky, rozšiřte působnost. Jinak skončíte s byrokratickým monstrem, které nemá s agilitou nic společného. | |||
Latest revision as of 21:23, 21 August 2026
Kromě testů využijte i nástroj pro automatizaci – kolekce runner. Spustíte celou kolekci najednou a sledujete výsledky. To se hodí při regresním testování po změně API. Runner umožňuje nastavit počet opakování a zpoždění mezi požadavky. Nezapomeňte na proměnné – pokud testujete sekvenci požadavků, kde jeden závisí na odpovědi předchozího, použijte skripty v sekci Tests pro uložení hodnoty do proměnné. Příklad: pm.environment.set("token", pm.response.json().token).
Při testování na reálných zařízeních se zaměřte na spotřebu baterie a přehřívání. To jsou aspekty, které automatizované testy na emulátoru neodhalí. Mějte po ruce několik fyzických zařízení, a to jak s operačním systémem od jednoho výrobce, tak i od jiného, protože každý systém má svá specifika. Pro uživatelské testování oslovte lidi, kteří aplikaci neznají, a sledujte, jak ji používají. Často zjistíte, že to, co je pro vás intuitivní, uživatelé dělají úplně jinak.
Časté chyby a jak je odstranit Jednou z typických chyb je dynamické sestavování dotazů pomocí řetězců, zejména když potřebujete řadit podle sloupce zvoleného uživatelem. Pokud uživatel může ovlivnit název sloupce nebo směr řazení, parametrizace nepomůže. V takovém případě vždy použijte seznam povolených hodnot, který ověří, že zadaný řetězec odpovídá skutečnému názvu sloupce. Druhou častou chybou je zapomínání na vstupy vstupující do LIKE, IN nebo ORDER BY klauzulí. I zde platí, že místo přímého vkládání vstupu použijte placeholder a pro dynamické části aplikujte whitelist.
Začněte tím, že si pečlivě naplánujete testovací scénáře. Nezapomeňte na okrajové případy, jako je přerušení připojení, příchod notifikace nebo volání během používání aplikace. Typickou chybou je testovat pouze na nejnovějším zařízení s nejnovější verzí systému. V praxi se ale většina uživatelů pohybuje na starších modelech, a proto je důležité mít k dispozici zařízení s různými verzemi operačního systému, nebo využít cloudové služby pro testování na vzdálených zařízeních.
NoSQL není jeden nástroj, ale rodina databází, které se liší datovým modelem. Existují dokumentové (JSON), sloupcové, klíč-hodnota a grafové. Každý typ řeší jiné problémy. Dokumentové databáze se hodí pro obsahově heterogenní záznamy, které byste v SQL řetězili přes deset JOINů. Sloupcové jsou vhodné pro analytiku nad obrovskými tabulkami, kde čtete jen vybrané sloupce. Klíč-hodnota je extrémně rychlá pro jednoduché operace, a grafové databáze zase skvěle modelují vztahy – typicky sociální sítě, doporučovací systémy nebo řízení práv.
Častým omylem je domněnka, že NoSQL je automaticky rychlejší. Rychlost závisí na případu použití a na tom, jak dobře je datový model navržený. Vezměte si příklad streamování událostí – logy, telemetrie. Sloupcová databáze je pro zápis mnohem rychlejší než klasická SQL, ale pokud potřebujete dotazovat se podle vztahů mezi entitami, budete psát složité agregační operace, které v SQL zvládnete jedním JOINem. Také si dejte pozor na to, jak NoSQL řeší rozšiřování. Většina z nich podporuje horizontální škálování – přidávání dalších uzlů – ale to s sebou nese problémy s distribucí dat, např. rozdělení na shardy. Bez promyšlené distribuční strategie vám může docházet k tomu, že dotaz musí prohledat všechny uzly, což je pomalé a nákladné.
Mezi nejčastější chyby patří zapomenutí na hlavičky, nesprávný formát těla požadavku nebo neuvědomění si rozdílu mezi GET a POST. U POST vždy nastavte hlavičku Content-Type na application/json a tělo zadejte v surovém formátu. Dále pozor na citlivé údaje – nikdy neukládejte hesla do proměnných, které sdílíte s týmem. Pro citlivá data použijte proměnné s hodnotami, které se nenačítají ze souboru. Postman je mocný nástroj, ale vyžaduje disciplínu. Pokud se naučíte strukturovat kolekce, používat proměnné a psát smysluplné testy, ušetříte si spoustu času a předejdete chybám v produkci.
Proměnné a prostředí – klíč k efektivnímu testování Pevně zadané adresy a hodnoty brzy znepřehlední práci. Proto používejte proměnné. V Postmanu je definujete buď globálně, nebo v rámci prostředí. Prostředí představuje sadu proměnných pro konkrétní prostředí – testovací, produkční. Adresu pak zapíšete jako baseUrl a hodnotu přiřadíte v nastavení. Stejně postupujte u přihlašovacích tokenů, které se mění při každém běhu testu.
Scrum není o tom, že budete dělat víc věcí za kratší dobu. Je o tom, že budete dělat ty správné věci a budete mít zpětnou vazbu dřív. Pro české týmy je klíčové, aby si ujasnily role, definici hotového a hlavně aby se nebály říct managementu, že něco nestihnou. Začněte malým pilotním projektem, ne celou organizací. Až uvidíte první výsledky, rozšiřte působnost. Jinak skončíte s byrokratickým monstrem, které nemá s agilitou nic společného.