SQL injection: proč ho vývojáři stále podceňují a jak se mu bránit
Základní pravidlo: oddělte konfiguraci pro každý jazyk zvlášť Většina moderních editorů umožňuje vytvořit konfigurační soubory přímo v kořenovém adresáři projektu. Využijte to. Pro Python nastavte formátování podle PEP 8, pro JavaScript použijte standardní styl nebo Prettier, pro TypeScript zase vlastní pravidla. Nezapomeňte, že konfigurace se může lišit nejen mezi jazyky, ale i mezi verzemi stejného jazyka. Pokud používáte více verzí Pythonu, ověřte, že máte pro každou z nich odpovídající interpret. Jinak hrozí, že váš kód bude fungovat lokálně, ale na serveru spadne.
Víte, co děláte s claims a podpisem? Claims neboli tvrzení uvnitř tokenu byste měli vždy omezit na minimum. Nepoužívejte JWT jako úložiště citlivých údajů – role, oprávnění, e-maily, natož hesla nebo osobní údaje. Token je totiž podepsaný, ale ne šifrovaný; kdokoli, kdo ho získá, si ho může dekódovat a přečíst. Pokud potřebujete předávat informace, které mají zůstat důvěrné, použijte šifrovaný token JWE nebo lépe: přenášejte pouze identifikátor uživatele a zbytek si načtěte z databáze. Také si dejte pozor na to, co děláte s veřejným klíčem – pokud používáte RS256, veřejný klíč by měl být opravdu veřejný, ale nikdy ne privátní. Záměna klíčů je bohužel častá a vede k tomu, že útočník může podepisovat tokeny.
Na závěr si ověřte, že váš editor umí správně pracovat s více jazyky v jednom souboru. Například pro HTML s vloženým CSS a JavaScriptem je nezbytné, aby editor zvýrazňoval syntaxi správně pro každou část. Pokud máte pocit, že zvýrazňování nefunguje, zkuste nainstalovat jazykovou podporu pro daný typ souboru nebo upravit asociaci přípon. To je rychlá oprava, která výrazně zlepší orientaci v kódu.
Hlídejte si také tzv. skrytou analytiku, tedy čas strávený vzájemným vysvětlováním požadavků, dohadováním detailů nebo přípravou testovacích scénářů. Tento čas se obvykle neobjeví v žádném plánu, ale ve výsledku tvoří značnou část reálné práce. Proto si do odhadu vždy přidejte rezervu alespoň 10–15 %. Pokud nemáte žádnou rezervu, jakýkoliv nečekaný požadavek ze strany product ownera rozbije celý sprint.
Nezapomínejte ani na verze API a na to, jakým způsobem se řeší zpětná kompatibilita. Frontend často běží v produkci a nemůže si dovolit, aby backend přestal podporovat staré parametry přes noc. Dokumentace by měla jasně označovat, která verze je aktuální a kdy bude starší verze ukončena. Dobrým zvykem je také popsat, jak vypadá autentizace a oprávnění – které endpointy vyžadují token, jak ho frontend získá a co se stane, když vyprší. Tyto informace bývají často roztroušené v kódu, ale pro frontend jsou zásadní.
Praktický tip: začni s malým projektem, který tě baví, třeba s jednoduchou kalkulačkou nebo seznamem úkolů. Při řešení konkrétního problému narazíš na chyby a budeš je muset opravovat. To je nejrychlejší způsob, jak se učit. Nevyhýbej se čtení dokumentace, i když je zpočátku nepřehledná. Postupně zjistíš, že je to tvůj nejlepší přítel.
Praktické pravidlo: analytickou fázi odhadujte na 20–30 % celkového času u složitějších úkolů, u jednoduchých změn stačí 10–15 %. Implementace pak zabere obvykle 50–60 % a zbytek připadá na testování a opravy. Tyto proporce ale nejsou dogma. Pokud zadání není jasné, je lepší analýzu natáhnout a implementaci odložit, než spěchat do kódu a pak vše předělávat. Typická chyba je odhadovat analýzu jako „půl dne na pročtení zadání" a zapomenout na rozhovory s uživatelem nebo na mapování závislostí.
Když frontend a backend spolupracují na jednom produktu, nejčastějším zdrojem nedorozumění bývá nejasná nebo neúplná dokumentace API. Bez ní vývojář rozhraní neví, jaká data přesně endpoint vrací, jaké datové typy použít nebo jak zpracovat chybové stavy. Výsledkem jsou zbytečné konzultace, přepisování kódu a prodlužování času potřebného na integraci. Klíčem k hladké spolupráci je dokumentace, která je živá, konkrétní a používá společné pojmy.
Práce s více jazyky v jednom projektu je častou příčinou zbytečných chyb a ztrát času. Než začnete psát kód, věnujte patnáct minut konfiguraci prostředí. Otevřete nastavení editoru a zkontrolujte, zda máte pro každý jazyk přiřazený správný formátovač a linter. Mnoho vývojářů spoléhá na výchozí nastavení, které ale často ignoruje specifické konvence jednotlivých jazyků. Výsledkem jsou konflikty ve verzování, nejednotný styl a zbytečné opravy při code review.
Další častou chybou je ignorování expirace tokenu. JWT obsahuje pole exp, ale pokud ho nenastavíte nebo nastavíte příliš dlouhou platnost, otevíráte dveře útočníkům, kteří ukradnou token a používají ho týdny. Nastavte expiraci na rozumnou dobu – obvykle 15 minut až několik hodin – a pro delší přístup použijte obnovovací tokeny, které mají vlastní životní cyklus a lze je bezpečně zneplatnit. Navíc vždy ověřujte nejen expiraci, ale i čas vydání (iat) a případně čas nepoužitelnosti (nbf), abyste zabránili použití tokenů, které ještě nebyly aktivovány.