Case study: Když si klient vyvine intranet přes AI a chce ho prodávat. Jak jsme v iQuestu auditovali 5 000 řádků kódu v Claude Artifacts
16. října 2026 | Lucie Vystrčilová iQuest
„Máme hotový firemní
intranet, který jsme si postavili pomocí AI. Funguje skvěle a chceme ho začít prodávat našim zákazníkům a dalším firmám na trhu. Potřebujeme od vás jen rychlou revizi kódu, abychom měli jistotu, že je vše připravené k nasazení.“
S tímto zadáním přišel do iQuestu majitel jedné ze spolupracujících firem. V ruce měl jediný HTML soubor s interním označením verze 102, v něm přes 5 200 řádků kódu a přesvědčení, že drží v rukou hotový komerční produkt. Nevěděl však, že to, co s pomocí AI vytvořil, není samostatná webová aplikace, ale experimentální artefakt běžící uvnitř rozhraní Claude od Anthropicu – se všemi fatálními důsledky pro bezpečnost, data a provoz.
Vzali jsme aplikaci do naší technické laboratoře a provedli hloubkový audit architektury, bezpečnosti a datových toků. Zde je přehled toho, co jsme našli, proč jsme museli komerční start okamžitě zastavit a jak jsme navrhli cestu, která tento prototyp bezpečně převede do plnohodnotné produkce.
První dojem: Fascinující funkční prototyp
Musíme uznat jednu věc: to, co klient dokázal pomocí Claude postavit bez jediného řádku kódu napsaného lidským programátorem, bylo obdivuhodné. Během několika dnů vytvořil funkční ekosystém, který přesně řešil bolavá místa jeho provozu:
- schvalování přijatých faktur ve více lidech včetně náhledů PDF,
- generování hromadných bankovních příkazů (formát ABO pro banku),
- interní znalostní bázi a schvalování pracovních postupů,
- plánování dovolených a kalendář termínů,
- evidenci vozového parku,
- AI asistenta napojeného na firemní ERP přes MCP konektory,
- autonomní agenty pro analýzu ziskovosti zakázek a kontrolu mezd.
Rozhraní bylo v češtině, plně responzivní, vyladěné pro mobilní telefony a mělo tmavý režim. Klient aplikaci používal ve firmě a byl nadšený. Z byznysového pohledu vytvořil dokonalý prototyp.
Z pohledu softwarového inženýrství jsme však otevřeli tikající bombu.
Co odhalil náš audit: 5 kritických zjištění
Při statické revizi kódu a mapování datových toků náš vývojový tým identifikoval celkem 14 zjištění (1 kritické, 3 vysoké a 5 středních rizik). Klientovi jsme situaci vysvětlili na jednoduché analogii: celá aplikace fungovala jako jeden masivní sdílený Excel s makry, uložený na soukromém cloudovém účtu majitele.
1. Řízení oprávnění existovalo jen v prohlížeči (Kritické)
Aplikace se tvářila, že má 9 uživatelských rolí (od vedení přes účetní, techniky až po řadové pracovníky). Náš audit ale odhalil, že databáze na serveru vůbec nerozlišuje, kdo je kdo – zná pouze úroveň sdílení celého artefaktu (čtenář / přispěvatel / editor).
Veškerá bezpečnostní pravidla byla napsaná pouze v JavaScriptu na straně klienta:
- Pokud pracovník neměl vidět analýzu výplat nebo marže, kód stránky mu pouze schoval tlačítko v menu.
- Samotná data faktur, čísel bankovních účtů a mezd se však při načtení stránky stáhla do paměti prohlížeče každého uživatele.
- Kdokoliv s minimální znalostí vývojářských nástrojů (F12 v prohlížeči) si mohl během deseti sekund přepsat roli na „vedení“ nebo vytáhnout kompletní finanční historii firmy.
2. Hromadný platební příkaz šlo podvrhnout (Vysoké riziko)
Intranet uměl vygenerovat bankovní soubor ABO pro export do internetového bankovnictví. Data pro platby (číslo účtu příjemce, částka, variabilní symbol) se však načítala ze sdílené dokumentové databáze artefaktu.
Do této databáze mohl kdokoliv s právem přispěvatele zaslat libovolný zápis mimo uživatelské rozhraní. V praxi by stačilo změnit číslo protiúčtu u schválené dodavatelské faktury přímo v datech. Aplikace by bez jakéhokoliv ověření vygenerovala platný bankovní příkaz a majitel firmy by ho v bance podepsal. Poslední a jedinou záchrannou brzdou byl lidský zrak při autorizaci v bance.
3. Autonomní AI procesy běžely na notebooku majitele (Vysoké riziko)
Analýzy zakázek, kontrola výplat a automatické akce nebyly naprogramované jako pevný kód. Aplikace posílala volný textový příkaz AI agentovi přes Claude Code Remote:
Tyto úlohy byly navázané na osobní účet majitele a běžely fyzicky na jeho zapnutém počítači*, kde byl v prohlížeči přihlášený do ERP s plnými administrátorskými právy.
- Když majitel zaklapl notebook, firemní procesy se zastavily.
- Výpočty hospodaření nebyly deterministické – stejný prompt mohl v pondělí a ve středu vrátit mírně odlišná čísla. Chyběla jakákoliv auditní stopa, co přesně agent v datech dělal.
Vzniklo obrovské riziko prompt injection*: pokud by dodavatel do poznámky na faktuře propašoval textový příkaz pro AI, agent spuštěný pod právy majitele by ho mohl nekontrolovaně vykonat.
4. 100% závislost na cizí platformě a data bez záloh
Celá aplikace stála na šesti proprietárních rozhraních Claude Artifacts window.claude.use()). Mimo rozhraní claude.ai aplikace vůbec nenastartovala – nenačetla databázi a zobrazila prázdnou bílou stránku.
Data (včetně příloh, PDF faktur a knihy jízd zakódovaných v base64 blocích) ležela v nestrukturovaných kolekcích bez schématu a transakční integrity. Aplikace neměla možnost centrální zálohy ani obnovy. Pokud by došlo ke smazání artefaktu nebo změně podmínek ze strany poskytovatele AI platformy, firma by okamžitě přišla o veškerou provozní historii i osobní údaje zaměstnanců.
5. Zranitelné knihovny bez kontroly integrity
Kód stahoval externí knihovny přímo z veřejných CDN bez hashů integrity (SRI). Nalezli jsme například zastaralou verzi knihovny pdf.js se známou zranitelností CVE-2024-4367 (umožňující spuštění libovolného kódu v prohlížeči přes speciálně upravené PDF). Protože aplikace zpracovávala PDF faktury zasílané externími dodavateli, šlo o přímou cestu k napadení firemního prostředí.
Proč nešlo intranet vzít a začít prodávat jako SaaS?
Klient k nám přišel s vizí, že aplikaci nabídne dalším firmám v oboru. Náš audit vystavil těmto plánům v dané podobě jasnou stopku:
| Problém | Proč to v artefaktu nefunguje |
|---|---|
| Multi-tenancy | Aplikace neumí oddělit data více firem. Všichni zákazníci by sdíleli jednu databázi – cizí firmy by viděly faktury, marže i zaměstnance našeho klienta. |
| Správa přístupů | Do artefaktu se lze přihlásit jen přes účet Claude. Propojení na externí systémy a AI nástroje navíc v testovacím sdílení mimo organizaci nefungují. |
| Hardcoded konfigurace | Názvy firem, bankovní spojení, adresy systémů i logo byly „zadrátované“ natvrdo přímo v kódu HTML stránky. |
| Právní odpovědnost a GDPR | Klient by se stal nekontrolovaným správcem citlivých a osobních dat cizích firem na svém soukromém spotřebitelském účtu. |
Jak jsme v iQuestu otočili hrozbu v obrovskou výhodu
Když jsme klientovi audit prezentovali, neodešel zklamaný. Naopak. Pochopil, že audit mu zachránil firmu před masivním bezpečnostním průšvihem a žalobami.
Navíc jsme mu ukázali to nejdůležitější: jeho práce ani čas nepřišly vniveč.
V iQuestu kód nezahodíme. Místo toho ho použijeme jako nejlepší zadávací dokumentaci, jakou jsme kdy od zákazníka dostali.
Běžná analýza softwaru trvá měsíce – sepisují se desítky stran specifikací, kreslí se wireframy a ladí se flow procesů. Klient díky AI tento proces přeskočil. Během pár dnů nám přinesl živý, otestovaný model procesů, u kterého jeho lidé přesně vědí, co potřebují ke své každodenní práci.
Náš plán transformace z prototypu do produkce:
- Okamžitá stabilizace: Jako první krok provedeme kompletní záchranný export dat a souborů z Claude artefaktu do bezpečného úložiště, omezíme sdílení jen na nezbytné osoby a opravíme kritické zranitelnosti v klientském kódu pro bezpečný dojezd současného stavu.
- Konec duplicit: Projdeme jednotlivé agendy intranetu a porovnáme je s naším systémem Smart Work System (SWS). Moduly jako auta, skladové výdejky nebo úkoly nebudeme stavět znovu – místo duplicit pouze v SWS zapneme a rozšíříme stávající nativní moduly.
- Přesun byznys logiky na backend: Schvalování faktur, generování bankovních příkazů a kontrolu rolí kompletně přepíšeme do Ruby on Rails a PostgreSQL. Veškerá oprávnění budeme hlídat striktně na serveru, čísla účtů napárujeme přímo na ověřená kmenová data dodavatelů a ke každému kroku doplníme neměnnou auditní stopu.
- Nahrazení nestabilních agentů: Výpočty mezd a marží převedeme z nespolehlivých textových promptů do deterministického backendového kódu běžícího na pozadí serveru. Jazykové modely ponecháme jen tam, kde skutečně excelují: pro vytěžování dat z nahraných faktur a sumarizaci textů.
- Skutečný SaaS: Nově vzniklé funkcionality začleníme do multi-tenantní architektury SWS. Každá firma bude mít striktně izolovaná data, centrální správu uživatelů a plné automatické zálohování.
Co si z tohoto case vzít?
Nástroje generativní AI jsou fantastický akcelerátor. Umožňují manažerům a podnikatelům postavit funkční prototyp a ověřit si ergonomii systému bez programátorů během několika dnů místo dlouhých měsíců.
Prototyp ale není produkční software.
Rozdíl mezi aplikací, která funguje na obrazovce v AI chatu, a softwarem, kterému můžete svěřit bankovní účet a firemní know-how, je v architektuře, backendu a bezpečnosti. Pokud jste si ve firmě pomocí AI postavili vlastní nástroj, který vám reálně pomáhá: skvělá práce, máte v ruce hotové zadání.
Než na něm ale postavíte své finance nebo ho začnete nabízet trhu, ozvěte se nám. V iQuestu se postaráme o to, aby vaše nápady bezpečně fungovaly i v reálném světě.
