Modul 19 · Bezpečnost prakticky

Vstupy a tajemství

Nedůvěřuj tomu, co přijde zvenčí, a nedávej tajné věci tam, kde je vidět.

12 minlekce 98/107

Po lekci umíš

  • Víš, proč se vstupy od uživatele kontrolují na serveru
  • Znáš nejčastější způsoby zneužití vstupu
  • Umíš zkontrolovat, že v projektu nejsou tajemství na špatném místě
Obsah lekce (5)

Dvě zbylé chyby ze čtyř. Obě jsou mechanické a obě se dají zkontrolovat promptem.

Vstupy

Vstup je cokoliv, co do aplikace přijde zvenčí: formulář, adresa, nahraný soubor, odpověď cizí služby.

Všechno z toho může být upravené.

Tři způsoby zneužití

  1. Podstrčený kód do stránky

    Uživatel zadá do pole text, který se pak na stránce vykoná jako kód. Postihne to jiné uživatele, kteří tu stránku otevřou.

  2. Podstrčený dotaz do databáze

    Vstup se vloží do databázového dotazu tak, že změní jeho význam. Když používáš běžnou vrstvu pro práci s databází, jsi proti tomu z velké části chráněný – ale ne, když se dotazy skládají ručně z textu.

  3. Nesmyslná data

    Záporný počet, cena nula, datum v roce 1900, e-mail bez zavináče. Nemusí to být útok – stačí překlep. Ale rozbije to výpočty.

Prompt pro Claude Code

Zkontroluj vstupy

Před spuštěním čehokoliv, kam mohou psát uživatelé.

Projdi místa, kde aplikace přijímá vstup od uživatele,
a zkontroluj je.

1. Kde se vstup nekontroluje na serveru – typ, povinnost, rozsah, délka?
2. Kde se text od uživatele zobrazuje jinému uživateli
 a mohl by se vykonat jako kód?
3. Skládají se někde databázové dotazy ručně z textu?
4. Kde se přijímá soubor – kontroluje se typ a velikost?
5. Kde by nesmyslná hodnota (záporné číslo, nula, obrovské číslo)
 rozbila výpočet?

U každého nálezu napiš, co by šlo způsobit. Zatím nic neopravuj.

Nahrávání souborů

Zvláštní kapitola, protože se u ní chybuje často.

  1. Kontroluj typ i velikost

    A to na serveru, ne podle přípony v názvu.

  2. Neukládej pod jménem, které poslal uživatel

    Název souboru může obsahovat cestu a dostat soubor někam, kam nemá.

  3. Neukládej to tam, odkud se to dá spustit

    Nahrané soubory patří do úložiště, ne mezi kód aplikace.

  4. Nastav strop

    Bez limitu velikosti a počtu ti někdo zaplní úložiště.

Tajemství

Druhá polovina lekce. Pravidla znáš z modulu o API, tady je kontrola celého projektu.

Prompt pro Claude Code

Najdi tajemství v projektu

Před zveřejněním repozitáře a před nasazením.

Prohledej tenhle projekt na tajemství, která tam nemají být.

1. Klíče, tokeny, hesla nebo přístupové řetězce přímo v kódu.
2. Totéž v historii Gitu, ne jen v aktuálním stavu.
3. Tajné hodnoty v proměnných s veřejnou předponou,
 které se dostanou do prohlížeče.
4. Přístupové údaje v konfiguračních souborech, které jsou v repozitáři.
5. Tajemství, která se můžou dostat do logu nebo do chybové hlášky.
6. Chybí něco v .gitignore?

U každého nálezu napiš, jak je to vážné a co udělat jako první.

Závislosti

Poslední místo, kde vzniká riziko: balíčky, které projekt používá.

  1. Přidávej vědomě

    Každý balíček je cizí kód, který běží s tvými právy.

  2. Kontroluj známé chyby

    Nástroje umí projít závislosti a nahlásit ty s nahlášenou zranitelností.

  3. Aktualizuj rozumně

    Ne každý den, ale ani jednou za dva roky.

Prompt pro Claude Code

Zkontroluj závislosti

Jednou za čas a před spuštěním naostro.

Zkontroluj závislosti projektu:

1. Jsou mezi nimi balíčky se známou bezpečnostní chybou?
2. Jsou tam balíčky, které se už nepoužívají?
3. Jsou tam balíčky, které dlouho nikdo neaktualizoval?
4. Je něco, co bychom zvládli bez knihovny?

U aktualizací mi řekni, které jsou bezpečné a které můžou
něco rozbít. Neaktualizuj nic sám.
Cvičení25 minut

Spusť ve svém projektu všechny tři kontrolní prompty z téhle lekce.

Nálezy si seřaď podle vážnosti a oprav ten nejvážnější. Zbytek si zapiš.

Tuhle trojici promptů si přidej do dovednosti „kontrola před nasazením“.

Co si odnést

  • Vstup zvenčí může být upravený. Kontroly patří na server.
  • Nejčastější škoda nevzniká z útoku, ale z nesmyslné hodnoty.
  • Nahrané soubory: kontroluj typ i velikost, neukládej pod cizím jménem, dej strop.
  • Tajemství hledej i v historii Gitu. Nalezený klíč nejdřív zneplatni.
  • Závislosti jsou cizí kód s tvými právy. Aktualizuj po částech.

Máš to za sebou?

Označ lekci jako hotovou, ať víš, kde jsi skončil. Nic se tím neuzamkne.

Obsah aktualizován: 21. srpna 2026