Co se stane, když aplikace nechá vstup neověřený
2026.10.03 01:49
Typy nejsou jen deklara
Typická chyba je dokumentace psaná ručně bokem. Během dvou sprintů se rozejde s realitou a nikdo jí nevěří. Lepší je generovat ji z anotací v kódu nebo z definičního souboru, který je součástí projektu. Tím se aktualizace stane přirozenou součástí vývoje a ne úkolem, na který se zapomíná. Pokud se dokumentace generuje, hlídejte, aby se do ní nedostaly interní poznámky a dočasné endpointy.
Popište kontrakt dřív než implementaci Začněte specifikací, ne až hotovým backendem. Napište, jaké endpointy existují, jaké metody přijímají, If you adored this article and you would like to obtain more facts relating to osvěTlení v obýváku kindly go to the website. jaké mají parametry a co vracejí. U každého pole uveďte typ, jestli je povinné, jaký má formát a co znamená null. Rozhodněte se předem pro jednotný styl pojmenování – buď camelCase, nebo snake_case, ne obojí. Stejně tak sjednoťte obal odpovědi: buď vršíte data přímo, nebo je balíte do obálky s daty a metadaty. Když se to neudělá na začátku, frontend bude mít v každé části aplikace jiný kód pro zpracování odpovědi.
Každý projekt dřív nebo později narazí na moment, kdy ruční nasazení přestane stačit. Někdo zapomene zkopírovat soubory, někdo spustí testy na špatné verzi, někdo jiný nasadí v pátek odpoledne a v pondělí řeší, co se pokazilo. GitHub Actions nabízí cestu, jak zařídit malou kuchyni tyto opakované kroky svěřit stroji. Nejde o nic magického – jde o soubor s definicí úloh, který se spouští při událostech v repozitáři.
Nakonec nastavte jednoduchý režim zpětné vazby. Když frontend narazí na nesrovnalost, musí vědět, kam ji zapsat a kdo ji opraví. Ideálně ať to je issue v témže repozitáři, kde leží dokumentace. Tím se z dohadování stane sledovatelný úkol. Pravidelná revize jednou za čas odstraní mrtvé endpointy a sjednotí to, co se v průběhu času rozjelo.
Jakmile kód roste, začne se dít jedna záludná věc: Analnoe.com jednotkové testy běží dál, ale integrační testy se začnou plazit. Vývojář spustí celou sadu, čeká deset minut, pak si řekne, že to pustí až večer. Přesně tam začíná problém. Testy, které se nespouštějí při každé změně, přestávají plnit svou roli a jen zabírají místo v repozitáři.
U chybových stavů nestačí uvést HTTP kód. Napište konkrétní strukturu chybové odpovědi, ať frontend ví, kde najde strojový kód a kde lidsky čitelnou zprávu. Rozlišujte chybu validace, chybu autentizace a chybu serveru. Bez toho se chybové hlášky řeší ad hoc a uživatel vidí nesmysly. Do dokumentace patří i příklady požadavků a odpovědí, ideálně s reálnými, ale anonymizovanými daty. Prázdný příklad s hodnotou „string" nikomu nepomůže.
Základem je zjistit, jaká metoda se používá. Většina začátečnických tutoriálů ukazuje GET, ale reálná API často vyžadují POST, PUT nebo DELETE. Pokud pošlete GET tam, kde server čeká POST, vrátí chybu 405 nebo 400. Stejně důležité je správně sestavit URL. Základní adresa (endpoint) musí být přesná, včetně cesty k prostředku. Vynechání lomítka nebo překlep v názvu parametru znamená, že server požadavek nepochopí. Vždy si nejdřív ověřte, že cesta je správná, a to ideálně v nástroji pro testování požadavků, ne přímo v kódu.
Prvním krokem k nápravě je přestat skládat dotazy pomocí konkatenace. Místo toho použijte parametrizované dotazy nebo prepared statements. Hodnoty se předávají jako parametry a databázový engine je nikdy nevykoná jako SQL kód. To platí pro všechny typy databází i jazyky. Pokud knihovna podporuje vázané parametry, je to vždy bezpečnější cesta než ruční escapování.
Kde se chyby opravdu dějí Nejčastější chyba není v hlavním formuláři, ale v místech, která vývojář přehlédne: řazení výsledků, filtry, číselné identifikátory v adrese, dávkové operace nebo administrační rozhraní. Dynamické názvy sloupců a tabulek nelze vázat jako hodnoty, proto je nutné je ověřovat proti pevnému seznamu povolených hodnot. Nikdy je neberte přímo z požadavku.
Dokumentace API není dílo pro veřejnost, ale pracovní nástroj pro tým. Pokud si ji backend a frontend nečtou stejně, vznikají dohady, zbytečné schůzky a přepisování hotového kódu. Základem je dohodnout se na jednom zdroji pravdy ještě předtím, než padne první řádek kódu. Tím zdrojem nemusí být nic drahého – stačí verzovaný soubor v repozitáři, který se aktualizuje společně s kódem.
Domluvte se na verzování. Když měníte tvar odpovědi nebo rušíte pole, stará verze musí chvíli žít dál, jinak rozbijete nasazený frontend. Zavádějte změny postupně a v dokumentaci vždy označte, co je zastaralé a čím se to nahrazuje. Nestačí poslat zprávu na chat – ta se ztratí. Změna bez záznamu v dokumentaci je pro druhý tým neviditelná.
SQL injection vzniká ve chvíli, kdy aplikace slepí dotaz z řetězců, do kterých se dostane vstup od uživatele. Útočník pak místo očekávané hodnoty pošle fragment SQL a databáze ho vykoná jako součást příkazu. Nejde o okrajovou chybu, ale o důsledek špatné konstrukce dotazu. Pokud se vstup neověřuje a dotaz se skládá ručně, stačí jediné pole formuláře nebo parametr v adrese.