Kdy měření pokrytí testy přestane přinášet užitek
Základem je ověřit podpis přesně tím algoritmem, který očekáváte. Nikdy nenechávejte knihovnu, aby si algoritmus vybrala podle hlavičky alg z tokenu. Pokud aplikace podporuje HS256 i RS256, musíte dopředu rozhodnout, který použijete, a ostatní odmítnout. Zvlášť nebezpečná je kombinace, kdy se veřejný klíč z RS256 dá podstrčit jako HMAC secret. Vždy porovnávejte iss, aud a exp; token bez expirace je jen trvalý přístupový klíč v cizích rukou.
Největší problém nastává u dynamických částí dotazu, které nelze parametrizovat: názvy tabulek, sloupců, směr řazení nebo klauzule LIMIT. Tady parametrizace nefunguje a je potřeba použít whitelist. Uživatel nesmí poslat název sloupce přímo. Aplikace má mít předem daný seznam povolených hodnot a z něj vybrat. Totéž platí pro směr řazení: hodnota musí být buď vzestupně, nebo sestupně, nic jiného se nepřijímá. Pokud se whitelist vynechá a nahradí se kontrolou pomocí regulárního výrazu, útočník často najde cestu, jak filtr obejít.
Měření pokrytí testy vypadá jako jednoduché číslo, které na první pohled říká, jak dobře je kód otestovaný. Jenže číslo samo o sobě nic neznamená. Rozhoduje, co se do něj započítává, jakým nástrojem ho měříš a jestli ho používáš jako zpětnou vazbu, nebo jako cíl. Pokud se z metriky stane cíl, začne se kód přizpůsobovat metrice místo tomu, aby testy odhalovaly chyby.
Začni názvy. Proměnná data, temp nebo x neříká nic. Místo d napiš datumObjednavky, místo arr klidně seznamKurzu. U funkcí používej sloveso: spocitejCenu(), nactiUzivatele(). Pokud název potřebuje komentář, je pravděpodobně špatný. Boolean pojmenuj jako tvrzení: jePrihlasen, maOpravneni, ne flag.
Dávejte pozor na min-width: auto, které je u grid a flex položek výchozí. Obsah, který se nevejde – dlouhé slovo, tabulka, obrázek – položku roztáhne a způsobí vodorovné posouvání. Řešením je min-width: 0 na položce a overflow-wrap: anywhere na textu. Stejně častá chyba je pevná výška u flex kontejneru. Výška se má odvozovat od obsahu, jinak se prvky překrývají nebo se ořezávají.
Nepoužívejte media queries pro každou změnu velikosti. Pokud rozvržení zvládne samo přecházet pomocí auto-fit, minmax a flex-wrap, nemusíte psát žádný breakpoint. Media queries nechte na skutečné změny uspořádání, ne na drobné úpravy mezer. Výsledkem je méně kódu, méně výjimek a rozvržení, které funguje i na zařízeních, která jste netestovali.
JWT tokeny se nasazují jako univerzální řešení autentizace, ale bez správně nastavené validace se z nich stává jen podepsaný kus textu, kterému server slepě věří. Nejčastější chyba není v algoritmu, nýbrž v tom, že se token dekóduje a jeho obsah se použije bez ověření podpisu a všech povinných polí. Útočník pak může změnit sub nebo role a dostat se tam, kam nemá.
Obrázky a média vkládejte s max-width: 100% a height: auto. U gridu se vyhněte pevným grid-template-columns: 1fr 1fr 1fr bez ohledu na obsah; lepší je repeat(auto-fit, minmax(...)). Mezery definujte přes gap, ne přes marginy na dětech – margin u posledního prvku v řadě vytváří nevyvážené okraje. Testujte nejen šířky, ale i zvětšené písmo a dlouhé české názvy, které se snadno vylijí z tlačítek.
Dalším krokem je zvyknout si na větev. Hlavní větev by měla zůstat stabilní a nasaditelná. Pro každou novou funkci nebo opravu si vytvořte samostatnou vedlejší větev. Tím izolujete rozpracovanou práci a zabráníte tomu, aby se rozbitý kód dostal do produkce. Až je změna hotová a otestovaná, sloučíte ji zpět do hlavní větve.
Od čeho se odpíchnout v praxi Nejprve si nainstalujte nástroj příkazové řádky, který budete používat. Většina vývojářů volí Git, ale principy jsou podobné i u jiných systémů. Vytvořte v kořeni projektu nový repozitář a nastavte si jméno a e-mail, které se budou zapisovat do historie. Poté přidejte soubory, které chcete sledovat, a vytvořte první revizi.
Responzivní design nezačíná u media queries, ale u volby správného nástroje pro rozvržení. CSS Grid a Flexbox nejsou konkurenty, které je třeba si vybrat jednou provždy. Grid řeší dvourozměrné uspořádání – řádky i sloupce současně. Flexbox řeší jednorozměrné uspořádání – obsah v jedné linii nebo sloupci. Pokud tuto hranici respektujete, přestanete psát zbytečné opravy a rozvržení se bude lámat předvídatelně.
Pozor na soubory, které do repozitáře nepatří. Konfigurační soubory s hesly, lokální nastavení prostředí, složky s dočasnými soubory nebo závislostmi by měly být vynechány pomocí speciálního seznamu. Pokud je omylem přidáte, zůstanou v historii navždy a jejich odstranění je pracné. Stejně tak nikdy necommitujte velké binární soubory, jako jsou videa nebo obrázky ve vysokém rozlišení, pokud to není nutné.