Přeskočit na obsah
Zpět na blog

Jak zabezpečit aplikaci postavenou přes vibe coding

Praktický postup po vrstvách, jak zabezpečit aplikaci postavenou přes Lovable, Cursor nebo Bolt. Od účtů a oprávnění po záznamy a zálohy.

Bezpečnost
Ondřej HájekOndřej Hájek · 5 min čtení

Aplikace funguje. Používají ji zákazníci. A vy jste někde četli, že aplikace postavené přes AI nástroje mívají díry, které nejsou vidět.

Tenhle text je praktický postup, co s tím. Je psaný tak, aby ho zvládl i člověk, který sám nekóduje, protože většina bodů se dá zadat tomu, kdo aplikaci stavěl, nebo ověřit vlastníma rukama.

Postupujte v tomhle pořadí. Není náhodné, jde od nejlevnějšího a nejúčinnějšího k tomu, co zabere víc času.

Vrstva 1: Účty a přístupy

Začněte tady, protože je to nejrychlejší a nepotřebujete k tomu nikoho.

Převeďte všechny účty na firmu. Hosting, databáze, doména, platební brána, e-mailová služba, AI služby, úložiště. Firemní e-mail se správcem, ne osobní adresa zaměstnance. Předplatné z firemní karty, ne ze soukromé.

Zapněte dvoufaktorové ověření všude, kde to jde. Zejména u domény a u hostingu, protože kdo ovládne doménu, ovládne všechno ostatní.

Zrušte sdílená hesla. Jedno heslo, které zná pět lidí včetně brigádnice z minulé sezóny, není přístup, je to veřejná informace. Každý člověk má mít vlastní účet, který jde samostatně zrušit.

Vypište, kdo má k čemu přístup, a projděte to. U většiny firem se najde aspoň jeden účet člověka, který tam už nepracuje.

Hotovo za jedno odpoledne, žádné technické znalosti, a odstraní to celou třídu problémů.

Vrstva 2: Oprávnění

Tohle je nejdůležitější bod celého textu. Většina závažných nálezů v aplikacích postavených přes AI leží přesně tady.

Rozdíl, o který jde: aplikace ověřuje, že jste přihlášení. Musí ale ověřovat, že se díváte na svoje data. To jsou dvě různé kontroly a AI nástroje spolehlivě generují jen tu první.

Otestujte to sami. Přihlaste se jako běžný uživatel, otevřete detail objednávky, rezervace nebo profilu a v adrese stránky přepište číslo na jiné. Pokud se zobrazí cizí záznam, máte problém, který dokáže využít kdokoliv.

Co zadat tomu, kdo aplikaci stavěl: každý požadavek, který pracuje s konkrétním záznamem, musí na serveru ověřit, že přihlášený uživatel má na daný záznam právo. Ne v prohlížeči, ne skrytím tlačítka, ale na serveru u každého požadavku zvlášť.

Oddělte role. Běžný uživatel a správce nesmí mít stejná práva jen proto, že správcovská stránka je na adrese, kterou nikdo nezná. Utajená adresa není ochrana.

Vrstva 3: Nevěřte ničemu z prohlížeče

Druhý nejčastější vzorec. Aplikace přijme z prohlížeče hodnotu a použije ji, jako by byla pravdivá.

Nejbolestivější je to u peněz. Pokud se výše platby, cena nebo sleva posílá z prohlížeče do platební brány a aplikace ji přijme bez ověření, dá se změnit.

Týká se to i identity. Pokud aplikace pozná, kdo jste, podle hodnoty, kterou jí prohlížeč pošle, dá se ta hodnota přepsat.

Vrstva 4: Soubory a úložiště

Pokud aplikace přijímá nahrávané soubory, projděte tři věci.

Kontrolujte, co se nahrává. Typ souboru, velikost, počet. Bez omezení se z úložiště stane cizí skladiště.

Zavřete přímý přístup. Nahraný soubor nesmí být dostupný komukoliv, kdo uhodne odkaz. Odkazy tvořené podle data a pořadí se uhodnout dají. Přístup k souboru musí projít stejnou kontrolou oprávnění jako zbytek aplikace.

Vrstva 5: Klíče a hesla v kódu

AI nástroje mají tendenci vkládat přístupové klíče přímo do kódu, protože to funguje a je to nejkratší cesta.

Projděte kód a najděte je. Klíče k platební bráně, k AI službám, k databázi, k e-mailu. Patří do prostředí, ne do kódu.

Pokud kód někdy byl veřejný, byť na chvíli, považujte všechny klíče v něm za vyzrazené a vygenerujte nové. Ne proto, že se určitě něco stalo, ale proto, že to nezjistíte.

Nastavte omezení u placených služeb. Zejména u AI služeb, kde se dá bez limitu vyčerpat velká částka během jednoho dne.

Vrstva 6: Osobní údaje

Sbírejte jen to, co potřebujete. Nejlepší ochrana údaje, který nemáte, je to, že ho nemáte. Projděte formuláře a zrušte pole, která nikdo nikdy nepoužil.

Nastavte, jak dlouho se data drží. Rezervace z předloňska nemusí v systému být.

Zajistěte možnost výmazu. Ne ruční zásah do databáze, ale funkce. Přijde vám žádost a máte lhůtu.

Zjistěte, kudy data protékají. Každá služba, přes kterou údaje jdou, je zpracovatel a potřebujete s ní smlouvu. Včetně AI služby, do které aplikace posílá obsah zpráv nebo dokumentů.

Vrstva 7: Záznamy a zálohy

Zaznamenávejte, kdo co udělal. Přihlášení, změna údaje, stažení exportu, smazání záznamu. Bez toho nezjistíte, že se něco stalo, ani koho se to týkalo. Při ohlašování incidentu je to rozdíl mezi „unikly údaje tří lidí“ a „musíme počítat s tím, že unikly údaje všech“.

Ověřte zálohy obnovením. Záloha, kterou nikdo nikdy neobnovil, je jen předpoklad zálohy. Zkuste to jednou, v klidu, mimo krizi.

Vrstva 8: Aplikace, která posílá text do AI

Pokud vaše aplikace předává obsah od uživatelů jazykovému modelu, přibývá jedna vrstva.

Text od uživatele není pokyn. Aplikace musí oddělit svoje zadání od obsahu, který jí poslal uživatel. Jinak se dá chování modelu ovlivnit zvenku tím, že do textu někdo napíše něco, co vypadá jako instrukce.

Výstup modelu nesmí spouštět akce bez kontroly. Pokud model rozhoduje o tom, co aplikace udělá s daty nebo penězi, musí mezi rozhodnutím a provedením být pravidlo, které to ověří.

V jakém pořadí to dělat, když nemáte čas na všechno

  1. Vrstva 1 celá. Jedno odpoledne, nulové náklady.
  2. Test z vrstvy 2, tedy změna čísla v adrese. Pět minut. Pokud projde, řešte to hned.
  3. Klíče v kódu z vrstvy 5. Půl dne.
  4. Přímý přístup k souborům z vrstvy 4, pokud aplikace sbírá doklady.
  5. Zbytek podle toho, co je ve vaší aplikaci nejvíc přítomné. Peníze, tak vrstva 3. Zákaznická data, tak vrstva 6.

Kde svépomoc končí

Body výše odstraní většinu toho, co se dá odstranit bez cizí pomoci. Zbývají tři věci, které si sami neuděláte.

Nevíte, co nevíte. Tenhle seznam pokrývá to nejčastější. Nepokrývá chyby v logice, které jsou vlastní právě vaší aplikaci.

Autor nevidí vlastní slepá místa. Platí to i pro zkušené vývojáře, proto ve firmách, které vyvíjejí software, prochází kód vždycky druhým člověkem.

Nemáte to písemně. Ve chvíli, kdy se zeptá klient, investor nebo úřad, „prošli jsme si to a vypadá to dobře“ nestačí.

Když provozujete aplikaci, ve které jsou cizí data nebo peníze, poslední krok patří někomu zvenku. VibeAudit projde přes 50 kontrolních bodů a dá vám písemný výstup s pořadím oprav.

Sdílet