Jak se bránit SQL injection ve webových aplikacích
Nepodceňujte režii a opakované činnosti Častou chybou je započítat pouze čistý čas kódu. Ve skutečnosti do odhadu musíte zahrnout schůzky, code review, opravy chyb, dokumentaci, komunikaci se zadavatelem a také vlastní učení. Pokud odhadujete novou technologii, přidejte 30–50 % rezervu. Stejně tak počítejte s tím, že testování zabere minimálně třetinu času. Mnoho vývojářů odhaduje pouze čas, kdy píší nový kód, ale zapomíná, že většina projektu je údržba a ladění.
Když tvoříte webové stránky, ať už jde o jednoduchou firemní prezentaci nebo rozsáhlejší aplikaci, dříve nebo později narazíte na situaci, kdy potřebujete vrátit změnu, porovnat verze nebo spolupracovat s někým dalším. Ruční kopírování souborů do složek s názvy jako „final_v2" nebo „opraveno_3" přestává fungovat ve chvíli, kdy projekt roste. Řešením je verzovací systém, který sleduje historii všech souborů a umožňuje vám pracovat bezpečně a přehledně.
Nejprve si vyberte nástroj. Většina webových vývojářů používá Git, a to z dobrého důvodu – je rychlý, rozšířený a funguje lokálně i vzdáleně. Po instalaci si otevřete terminál ve složce projektu a spustíte příkaz k inicializaci repozitáře. Tím vytvoříte skrytou složku, do které se ukládají informace o změnách. Než ale začnete commitovat, vytvořte si soubor .gitignore, do kterého zapíšete vše, co se verzovat nemá: složky jako node_modules, dočasné soubory, konfigurace s hesly nebo soubory s lokálním nastavením. Tím předejdete tomu, že se do historie dostanou zbytečné nebo citlivé údaje.
Na závěr si osvojte jednu užitečnou návyk: pište si ke každému projektu soubor .dockerignore. Do něj vložte složky jako node_modules nebo .git, aby se při buildu nekopírovaly zbytečné soubory. Nejenže to zrychlí build, ale také zabrání tomu, aby se do obrazu dostaly citlivé údaje z vašeho lokálního prostředí. Docker není kouzlo, ale když se naučíte jeho základní principy, ušetří vám hodiny práce při nasazování aplikací. Vyzkoušejte si to na malém projektu – vytvořte si vlastní obraz, spusťte ho a postupně přidávejte další funkce, jako jsou svazky nebo síťová propojení mezi kontejnery. Za pár dní zjistíte, že bez kontejnerů už nechcete pracovat.
Třetí úskalí spočívá v tom, že lidé často spouští kontejnery interaktivně bez náležitého přepínače. Pokud potřebujete vejít do běžícího kontejneru a prozkoumat ho, použijte docker exec -it název_kontajneru sh. Bez -it se nedostanete do interaktivního shellu a budete jen bezradně koukat na výstup. Také si zvykněte na pravidelný úklid: příkaz docker system prune smaže nepoužívané obrazy, kontejnery a sítě, čímž uvolní místo na disku. Naopak se vyvarujte mazání kontejnerů, které právě běží – vždy je nejprve zastavte příkazem docker stop.
Prvním praktickým krokem je instalace Dockeru. Na Linuxu obvykle použijete balíčkovací nástroj vaší distribuce, na Windows a macOS stáhnete instalační program z oficiálních stránek. Po instalaci si ověřte funkčnost příkazem docker --version. Hned poté si vytvořte první kontejner: docker run hello-world. Tento příkaz stáhne malý testovací obraz a spustí ho. Pokud vidíte uvítací hlášku, máte vyhráno. Nezapomeňte, že Docker na Linuxu vyžaduje práva roota – buď použijte sudo, nebo přidejte svého uživatele do skupiny docker, abyste nemuseli psát sudo pokaždé.
Doporučuji udržovat každou větev krátkodobou a zaměřenou na jednu konkrétní funkci. Pokud potřebujete provést změny, které nesouvisí s aktuální funkcí, vytvořte si pro ně samostatnou větev. To platí i pro drobné opravy, které byste chtěli rychle nasadit. Izolace změn vám umožní je nezávisle testovat a vracet zpět, aniž byste ohrozili ostatní práce. Při pojmenování větví používejte jasný systém, který obsahuje identifikátor úkolu a krátký popis, ale vyhněte se obecným názvům jako „fix" nebo „test".
Základním krokem je rozdělení projektu na malé, nezávislé úkoly. Místo odhadu celého modulu „fakturace" odhadněte jednotlivé kroky: návrh databáze, API endpointy, formuláře, testy. Každý úkol by měl být dostatečně malý na to, aby jeho odhad nepřesáhl pár dní. U větších celků hrozí, že zapomenete na skryté závislosti. Doporučuji použít techniku „t-shirt sizes" nebo Fibonacciho posloupnost (1, 2, 3, 5, 8...), která nutí přemýšlet v relativních velikostech, ne v přesných hodinách.
Kromě lokálního repozitáře byste měli mít i vzdálenou kopii, třeba na službě pro hosting projektů. Tím získáte zálohu a možnost spolupracovat s týmem. Push a pull jsou příkazy, které budete používat denně. Předtím, než začnete pracovat, si vždy stáhněte nejnovější změny, abyste nepřepisovali práci ostatních. Pravidelně commitujte – ideálně po každé logické části práce, ne až na konci dne. To vám umožní snadno najít místo, kde se něco rozbilo, a vrátit se k poslednímu funkčnímu stavu.