Kurz

Checklisty

Bezpečnostní kontrola

Deset otázek, které si polož u každé aplikace s uživateli. A hranice, za kterou patří odborník.

Tenhle seznam nenahrazuje bezpečnostní audit. Pokryje ale chyby, které se v aplikacích od začátečníků objevují nejčastěji.

Tajemství

  1. Nikde v kódu není klíč, heslo ani token

    Ani v komentáři, ani v testovacím souboru, ani „dočasně“.

  2. Soubor .env je v .gitignore

    Ve všech variantách: .env, .env.local, .env.production.

  3. Žádná proměnná NEXT_PUBLIC_ neobsahuje tajemství

    Cokoliv s touhle předponou je veřejné. Bez výjimky.

  4. Uniklý klíč byl zrušený, ne jen smazaný z kódu

    Historii Gitu si mohl kdokoliv stáhnout. Jediné řešení je vygenerovat nový a starý zneplatnit.

Data a oprávnění

  1. Každý dotaz ověřuje vlastnictví záznamu

    Nestačí ověřit, že je uživatel přihlášený. Musí se ověřit, že tenhle konkrétní záznam patří jemu.

  2. Kontrola je na serveru, ne jen v rozhraní

    Schované tlačítko není ochrana.

  3. Vstupy se validují na serveru

    Validace ve formuláři je pohodlí pro uživatele, ne bezpečnost.

Prompt pro Claude Code

Test oddělení dat mezi uživateli

Nejdůležitější bezpečnostní test u aplikace s účty.

Chci ověřit, že uživatel nemůže vidět cizí data.

1. Projdi všechna místa, kde se čtou nebo mění data uživatele.
2. U každého mi napiš, jestli se ověřuje, že záznam patří
 přihlášenému uživateli – a jak přesně.
3. Kde tahle kontrola chybí, vypiš to jako seznam.
4. Napiš mi postup, jak si to ručně ověřím na dvou účtech, včetně
 pokusu dostat se k cizímu záznamu přes přímou adresu.

Zatím nic neopravuj.

Provoz

  1. Chybové hlášky neprozrazují detaily

    Uživatel má vidět „něco se nepovedlo“, ne obsah chyby ze serveru.

  2. Existuje záloha dat a zkusil jsi ji obnovit

    Záloha, kterou jsi nikdy nezkusil obnovit, není záloha.

  3. Závislosti nemají známé zranitelnosti

    Spusť npm audit. U nálezů se poraď, co s tím – ne vše je nutné hned řešit.

Kdy si přizvat odborníka

Tenhle seznam má hranice. Za nimi je práce pro člověka, který za svůj úsudek ručí.

  • Aplikace přijímá platby nebo pracuje s bankovními údaji.
  • Ukládají se zdravotní údaje, rodná čísla nebo citlivé osobní údaje.
  • Na aplikaci závisí provoz firmy a výpadek stojí peníze.
  • Podepisuješ zákazníkovi smlouvu, ve které za funkčnost ručíš.

V těchhle případech nejde o to, že bys to nepostavil. Jde o to nechat si to zkontrolovat.

Prompt pro Claude Code

Kompletní bezpečnostní průchod

Před prvním veřejným spuštěním aplikace s uživateli.

Projdi celý projekt z hlediska bezpečnosti. Chovej se jako někdo,
kdo chce najít díru, ne jako kdo chce projekt pochválit.

Zaměř se na:
1. Tajemství v kódu nebo ve veřejných proměnných.
2. Místa, kde se čtou data bez ověření vlastnictví.
3. Vstupy od uživatele, které se nevalidují na serveru.
4. Chybové hlášky, které prozrazují víc, než mají.
5. Závislosti se známými zranitelnostmi.
6. Cokoliv, co by šlo zneužít, kdyby to zkoušel někdo se zlým úmyslem.

Výstup jako seznam nálezů seřazený podle závažnosti. U každého napiš,
co se může stát a jak to opravit. Zatím nic neměň.

Obsah aktualizován: 21. srpna 2026