Skip to content

Bezpečné programovanie s AI: ako nechať agenta písať kód pre WordPress a e-shop bez bezpečnostných dier

Obsah článku

O autorovi článku

RNDr. Milan Fraňo, PhD. – SEO špecialista a web editor – wooacademy

O autorovi článku

RNDr. Milan Fraňo, PhD. – SEO špecialista a web editor – wooacademy

☕Páčil sa vám článok? Podporte nás likom na YouTube kanál alebo kúpou kávy.

Malé agentúry a majitelia e-shopov dnes bežne nechávajú AI písať kód. Úprava šablóny, vlastný shortcode, export objednávok, napojenie na kuriéra. Claude Code, Codex, Cursor alebo GitHub Copilot to zvládnu rýchlo a výsledok na prvý pohľad funguje. Problém je, že funkčný kód a bezpečný kód nie sú to isté. Web, ktorý beží, môže mať zároveň otvorené dvere pre každého, kto vie, kam sa pozrieť.

Bezpečné programovanie s AI preto nestojí na otázke, či kód napísal človek alebo model. Stojí na procese, ktorý chyby zachytí bez ohľadu na autora. Tému nedávno rozoberal vývojársky tím Google v krátkom videu a opieral sa o výskum DORA. Jeho štyri piliere tu prenesiem do sveta WordPressu a WooCommerce, doplním fakty zo zdrojov a pridám to, čo vo videu chýbalo: čo agentovi nikdy nedávať do rúk, ako narábať s heslami a ako vyzerá rozumný postup pre malý tím bez vlastného bezpečnostného oddelenia.

Stručne: štyri piliere bezpečného programovania s AI

  1. Malé dávky. Jedna malá zmena, jeden test, jedna kontrola. Nie celý plugin naraz.
  2. Kontext a pravidlá. Agent dostane bezpečnostné pravidlá projektu v súbore, ktorý číta pri každej úlohe.
  3. Obmedzené prístupy a skutočný sandbox. Agent smie len to, čo úloha nevyhnutne potrebuje. Produkcia a zákaznícke dáta sú mimo jeho dosahu.
  4. Externé overenie. Kód kontrolujú nástroje a človek, nie len ten istý agent, ktorý ho napísal.

Prečo kód od AI nie je automaticky bezpečný

Veracode v správe GenAI Code Security Report otestoval viac ako 100 jazykových modelov. V 45 % prípadov vygenerovaný kód neprešiel bezpečnostnými testami a obsahoval zraniteľnosť z kategórií OWASP Top 10. Pri ochrane pred cross-site scriptingom (XSS) modely zlyhali v 86 % relevantných ukážok. Najdôležitejšie zistenie je však iné: novšie a väčšie modely píšu funkčnejší kód, no bezpečnosť sa s nimi nezlepšuje.

Pre WordPress je to nepríjemná správa. Podľa správy Patchstack State of WordPress Security in 2025 pribudlo v ekosystéme WordPressu za rok 2024 celkovo 7 966 nových zraniteľností. Až 96 % z nich bolo v pluginoch, 43 % sa dalo zneužiť bez prihlásenia a najčastejším typom bolo práve XSS. Kód, ktorý vám vygeneruje agent, je v praxi nový plugin alebo úprava šablóny. Patrí teda presne do kategórie, kde vzniká najviac dier.

Tretí údaj sa týka hesiel. GitGuardian v State of Secrets Sprawl 2025 uvádza, že verejné repozitáre s Copilotom mali mieru úniku tajných kľúčov 6,4 %, teda približne o 40 % viac ako priemer verejných repozitárov.

Google v predstavení DORA 2025 píše, že AI v práci používa 90 % respondentov a viac ako 80 % z nich cíti vyššiu produktivitu. Zároveň 30 % dôveruje kódu od AI len málo alebo vôbec. Hlavný záver výskumu znie tak, že AI funguje ako zosilňovač. Dobré procesy posilní, zlé procesy tiež. Ak nahrávate zmeny cez FTP priamo na ostrý web, agent vám to len zrýchli.

Prvý pilier: malé dávky a testy

DORA v opise schopnosti práca v malých dávkach výslovne uvádza, že nasadenie AI často zvyšuje nestabilitu dodávky softvéru a malé dávky sú proti tomu hlavnou protiváhou. AI vie rýchlo vyrobiť veľký blok kódu a práve tomu treba odolať. Veľkú zmenu nikto poriadne neskontroluje ani neotestuje.

V praxi to znamená rozdeliť zadanie. Namiesto pokynu napíš mi plugin na vernostný program zadáte najprv výpočet bodov z objednávky, potom zobrazenie bodov v účte zákazníka, potom uplatnenie zľavy. Každý krok je samostatný commit, ktorý si viete prečítať za pár minút.

K malým dávkam patria testy. Postup známy ako vývoj riadený testami funguje aj s agentom: najprv test, ktorý popisuje správanie, potom kód, ktorý test splní, a nakoniec úprava. Test agentovi zúži úlohu a vám dá istotu, že neskoršia oprava nič nerozbije. Pre WordPress existuje oficiálny testovací rámec postavený na PHPUnit, takže nejde o exotiku.

Jedna vec, ktorú treba povedať nahlas: testy od agenta kontrolujte. Agent, ktorý nepochopil zadanie, napíše aj test, ktorý zlé správanie potvrdí. Pri platobných a prihlasovacích funkciách si testovacie scenáre radšej napíšte sami, aspoň slovne.

Druhý pilier: kontext a pravidlá projektu

Každý väčší nástroj dnes číta súbor s pravidlami projektu. Gemini CLI používa súbory GEMINI.md, ktoré načítava hierarchicky od globálnych až po súbory v jednotlivých podpriečinkoch. Claude Code má CLAUDE.md a Codex, Cursor či Copilot coding agent podporujú otvorený formát AGENTS.md, pri ktorom má prednosť súbor najbližšie k upravovanému kódu.

Práve táto hierarchia je užitočná. Do koreňa projektu dáte všeobecné pravidlá, do priečinka s platobnou integráciou prísnejšie pravidlá pre prácu s API brány. Pre WordPress odporúčam do pravidiel prepísať zásady z oficiálnej bezpečnostnej príručky pre vývojárov WordPressu:

  • nikdy neveriť vstupu od používateľa a každý vstup validovať a sanitizovať,
  • výstup escapovať čo najneskôr, tesne pred vypísaním,
  • pri formulároch a AJAX požiadavkách overovať nonce,
  • pred každou akciou kontrolovať oprávnenia používateľa,
  • SQL dopyty skladať len cez pripravené dopyty v objekte wpdb, nikdy spájaním reťazcov,
  • nepridávať nový plugin ani knižnicu bez výslovného súhlasu.

Kontext však nemá byť román. Čím dlhší súbor, tým viac tokenov minie každá úloha a tým ľahšie sa podstatné pravidlo stratí. Ako s kontextom hospodáriť, rozoberám v návode ako ušetriť tokeny v ChatGPT, Codexe a Claude.

Tretí pilier: prístupy a sandbox

Tu je najväčší rozdiel medzi pocitom bezpečia a skutočným bezpečím. Pravidlo v kontexte je prosba. Agent ho môže prehliadnuť alebo ho môže obísť podvrhnutý pokyn, napríklad text schovaný v recenzii produktu, ktorú agent práve spracúva. OWASP tento problém vedie v Top 10 pre LLM aplikácie ako prompt injection a hneď vedľa neho popisuje nadmernú autonómiu (Excessive Agency). Jej príčiny sú tri: agent má priveľa funkcií, priveľa oprávnení a primálo ľudskej kontroly. OWASP odporúča riešiť oprávnenia v systéme, ku ktorému agent pristupuje, a nespoliehať sa na to, že model sám usúdi, čo smie.

Podobný omyl sa týka sandboxu. Mnohé nástroje za sandbox označujú obyčajný Docker kontajner. Kontajner však zdieľa jadro hostiteľského systému a pri zraniteľnosti v jadre z neho môže útočník uniknúť. Riešenia ako gVisor vkladajú medzi aplikáciu a hostiteľa vlastné aplikačné jadro, ktoré systémové volania nepúšťa priamo do hostiteľa.

Malému tímu stačí rozumne nastaviť to, čo nástroje už majú:

  • Codex podľa dokumentácie o schváleniach a bezpečnosti beží predvolene bez prístupu na sieť a ponúka režimy len na čítanie, zápis v pracovnom priečinku a plný prístup. Ten posledný nepoužívajte.
  • Claude Code umožňuje v nastavení oprávnení zakázať čítanie súborov ako .env alebo celých priečinkov s tajomstvami. Dokumentácia však poctivo upozorňuje, že tieto pravidlá nezastavia skript, ktorý súbor otvorí sám. Na tvrdú hranicu treba zapnúť sandbox na úrovni operačného systému.
  • Cursor a Copilot v editore spúšťajú príkazy v termináli. Automatické spúšťanie bez potvrdenia nechajte vypnuté pre všetko, čo nie je čisté čítanie.

Čo agentovi nikdy nedovoliť

  • prístup k produkčnej databáze e-shopu, a to ani na čítanie,
  • prihlasovacie údaje k hostingu, FTP, SSH alebo administrácii ostrého webu,
  • ostré API kľúče platobnej brány, kuriéra či účtovného systému,
  • nasadenie na produkciu bez ľudského schválenia,
  • inštaláciu pluginov a knižníc z neoverených zdrojov,
  • prácu so skutočnými údajmi zákazníkov z objednávok.

Posledný bod nie je len technický. Objednávky obsahujú osobné údaje a ich vloženie do AI nástroja je z pohľadu GDPR prenos k ďalšiemu spracovateľovi. Na vývoj stačí kópia databázy s anonymizovanými zákazníkmi.

Štvrtý pilier: externé overenie

Ak ten istý agent napíše kód aj jeho kontrolu, stále ide o jeden pohľad. Preto do procesu patria nezávislé nástroje. Statická analýza bezpečnosti (SAST) prechádza zdrojový kód a hľadá rizikové vzory. Analýza softvérových komponentov (SCA) kontroluje, či knižnice, na ktorých kód stojí, nemajú známe zraniteľnosti. Obe sú deterministické: rovnaký kód dá rovnaký výsledok, čo je pri kontrole presne to, čo chcete.

Majú aj slabinu. Hlásia potenciálne problémy, nie to, či sa dajú reálne zneužiť, a bez nastavenia generujú veľa falošných poplachov. Tu sa agent hodí znova: dáte mu nález, on navrhne opravu a vaše testy z prvého piliera overia, že oprava nič nerozbila.

Chyby v biznis logike statická analýza nenájde. Zľavový kód použiteľný opakovane alebo objednávka dostupná cudziemu zákazníkovi po zmene čísla v URL sú typické príklady. Na tie môžete agenta nasadiť v úlohe útočníka a nechať ho hľadať, ako by sa dal váš e-shop zneužiť. DORA v opise schopnosti všadeprítomná bezpečnosť zdôrazňuje, že bezpečnosť má byť súčasťou každodennej práce a automatických testov, nie záverečnou kontrolou pred spustením.

Bezpečný postup pre WordPress a WooCommerce s AI agentom

1. Pripravte oddelené vývojové prostredie

Agent pracuje na lokálnej kópii alebo na stagingu, nikdy na ostrom webe. Ak staging ešte nemáte, pomôže návod na migráciu a duplikovanie WordPress webu. Databázu pred kopírovaním anonymizujte.

2. Dajte projekt do Gitu

Každá zmena od agenta musí byť viditeľná ako rozdiel oproti predchádzajúcej verzii. Bez verzovania neviete, čo agent zmenil, a nemáte sa kam vrátiť.

3. Oddeľte heslá od kódu

Kľúče a heslá patria do súboru .env alebo do premenných prostredia, ktoré sú v .gitignore a agent ich nevidí. Súbor wp-config.php chráňte podľa oficiálneho návodu na zabezpečenie WordPressu, ktorý odporúča aj vypnúť editor súborov v administrácii konštantou DISALLOW_FILE_EDIT. Pre staging vytvorte samostatné testovacie kľúče s minimálnymi právami. Kľúčom k API WooCommerce viete nastaviť oprávnenie len na čítanie. Ak kľúč niekedy skončí v chate alebo v repozitári, okamžite ho vymeňte. Nemazať, vymeniť.

4. Napíšte súbor s pravidlami

Vytvorte AGENTS.md alebo CLAUDE.md so zásadami zo sekcie o kontexte, s popisom štruktúry projektu a so zoznamom zakázaných akcií.

5. Zadávajte prácu po malých krokoch

Jedna funkcia, jeden test, jeden commit. Pri každom kroku si pozrite rozdiel v kóde skôr, ako ho schválite. Ak diffu nerozumiete, zmenu nepúšťajte ďalej.

6. Spustite automatické kontroly

Minimom pre WordPress je PHP_CodeSniffer s pravidlami WordPress Coding Standards, ktoré obsahujú aj bezpečnostné kontroly escapovania, sanitizácie a nonce. K tomu kontrola závislostí cez composer audit alebo npm audit a zapnuté skenovanie tajomstiev v repozitári.

7. Nechajte kód skontrolovať človeka

Aspoň pri všetkom, čo sa dotýka platieb, prihlásenia, objednávok a osobných údajov. Druhý pár očí nemusí byť senior vývojár, stačí človek, ktorý sa pri každom vstupe opýta, odkiaľ prišiel a kto ho vidí.

8. Nasadzujte s cestou späť

Pred nasadením zálohu, po nasadení kontrola logov. Chyby, ktoré testy nezachytili, často ako prvé ukáže access log servera. A kód od agenta aktualizujte rovnako disciplinovane ako ostatné pluginy a WordPress.

Prehľad: čo môže agent robiť a za akých podmienok

ÚlohaAgent áno?Podmienka
Úprava šablóny, CSS, shortcodeÁnoStaging, malý commit, kontrola diffu
Nový vlastný pluginÁnoTesty, SAST, ľudská kontrola
Napojenie na API kuriéra či brányOpatrneLen testovacie kľúče, pravidlá v priečinku
Inštalácia pluginu z internetuNie sámVýber a schválenie robí človek
Práca s produkčnou databázouNieLen anonymizovaná kópia
Nasadenie na ostrý webNie sámZáloha a schválenie človekom

Môj pohľad: čo vo videu nezaznelo

Video je dobre postavené, ale mieri na tímy s CI pipeline, bezpečnostným oddelením a vlastnými vývojármi. Väčšina slovenských e-shopov na WooCommerce takú výbavu nemá. Nemajú ani staging a zmeny idú priamo na ostrý web. Pre nich je najväčším rizikom poradie krokov, nie chýbajúci SAST. Kým agent pracuje na produkcii s administrátorským prístupom, žiadny skener to nezachráni.

Druhá vec, ktorú vo videu postrádam, je dodávateľský reťazec. Agent rád navrhne, nech si doinštalujete plugin alebo knižnicu, ktorá úlohu vyrieši. Kto vyberá, čo sa do webu dostane, je rovnaká otázka ako pri nulled pluginoch, len v novom obale. OWASP ju vedie ako samostatné riziko a ja ju považujem pri WordPresse za kritickejšiu ako samotnú kvalitu vygenerovaného kódu.

Tretia poznámka sa týka rozdielu medzi AI agentom a automatizáciou. Nie každá úloha potrebuje agenta s prístupom k terminálu. Pravidelný export objednávok alebo úpravu feedu často lepšie zvládne pevne daný workflow, ktorý nemá čo pokaziť. Rozdiel vysvetľujem v článku AI agenti vs. AI workflow.

Moje odporúčanie je jednoduché. Začnite stagingom, Gitom a oddelením hesiel. To sú tri kroky, ktoré stoja pár hodín a odstránia väčšinu rizika. Až potom riešte pokročilé skenery a útočiacich agentov. A ak si nie ste istí, či váš e-shop na WooCommerce má tieto základy v poriadku, radšej to nechajte skontrolovať pred tým, ako pustíte agenta k ďalšej funkcii. S nastavením bezpečného vývoja aj s tvorbou webu a e-shopu na WordPresse vám radi pomôžeme.

Časté otázky

Je kód, ktorý napíše AI, bezpečný?

Nie automaticky. Testy Veracode ukázali bezpečnostné chyby v 45 % vygenerovaného kódu a novšie modely v tom neboli lepšie. Kód od AI treba kontrolovať rovnako prísne ako kód od nového kolegu, ideálne nástrojmi aj človekom.

Môžem dať AI agentovi prístup k hostingu alebo FTP?

Neodporúčam to. Agent má pracovať na lokálnej kópii alebo na stagingu a nasadenie na ostrý web má schvaľovať človek. Prihlasovacie údaje k produkcii by agent nemal vidieť vôbec, ani v súboroch projektu.

Stačí agentovi napísať, aby neotváral súbor s heslami?

Nie. Pokyn v kontexte je len prosba, ktorú môže model prehliadnuť alebo ju obíde podvrhnutý text. Skutočnou ochranou je, že heslá v pracovnom priečinku agenta vôbec nie sú a že nástroj beží v sandboxe s obmedzeným prístupom k súborom a sieti.

Je Docker kontajner dostatočný sandbox?

Pre bežnú izoláciu vývojového prostredia pomôže, bezpečnostnou hranicou však sám osebe nie je, pretože zdieľa jadro hostiteľa. Prísnejšiu izoláciu dávajú riešenia s vlastným aplikačným jadrom ako gVisor alebo virtuálne stroje. Pre malý tím je rozumným minimom zabudovaný sandbox nástroja a vypnutý prístup na sieť.

Ktorý nástroj je najbezpečnejší, Claude Code, Codex, Cursor alebo Copilot?

Rozdiel nerobí značka, ale nastavenie. Všetky štyri vedia pracovať s obmedzenými oprávneniami a schvaľovaním príkazov. Bezpečnosť určí, či máte staging, oddelené heslá, malé zmeny a kontrolu kódu.

Potrebujem na bezpečný vývoj s AI programátora?

Na jednoduché úpravy šablóny nie. Pri kóde, ktorý pracuje s platbami, objednávkami, prihlásením alebo osobnými údajmi, by mal výsledok skontrolovať niekto, kto rozumie WordPressu a jeho bezpečnostným zásadám. AI prácu zrýchli, zodpovednosť za web však zostáva na vás.

Ako zistím, že agent do kódu nepridal niečo škodlivé?

Pozerajte každý diff pred schválením, spúšťajte automatické kontroly kódu a závislostí a nedovoľte agentovi inštalovať nové balíky bez súhlasu. Pri podozrení vráťte zmenu cez Git a úlohu zadajte znova po menších krokoch.

Zhrnutie

Bezpečné programovanie s AI nie je o tom, či agentovi dôverovať. Je o tom, aby ste mu dôverovať nemuseli. Malé dávky s testami, jasné pravidlá projektu, obmedzené prístupy so skutočným sandboxom a nezávislá kontrola fungujú bez ohľadu na to, či kód napísal človek, Claude alebo Copilot. Pri WordPresse a WooCommerce začnite tým najlacnejším a najúčinnejším: staging, Git, heslá mimo kódu a žiadny agent na produkcii.

O autorovi

RNDr. Milan Fraňo, PhD.

HEAD of SEO, web editor, co-founder wooacademy

Môj príbeh SEO špecialistu …

SEO konzultácia

Naplánuj si konzultáciu
s našimi profesionálmi.

konzultacia social kampane

Facebook marketing partner – social marketing

HEAD of SEO a web editor – weby & SEO

Google certifikovaná trénerka – Google ads kampane (PPC)

Zanechajte nám kontaktné informácie a pripravíme cenovú ponuku na mieru ?

Marketingové služby na mieru, ozvite sa!