A vibe-kódolt appok rejtett biztonsági adóssága: mit tanultunk 155 indulásból

A vibe-kódolt appok rejtett biztonsági adóssága: mit tanultunk 155 indulásból

Okt 19, 2026 vibe coding web security supabase development tools startup checklist

AI-alapú fejlesztés: A gyorsaság csapdája

Hadd legyek őszinte: mindannyian csináltuk már. Eltöltöttünk egy délutánt a Lovable, Bolt vagy Cursor körül, és vacsorára már éles URL-en futott a projekt. Mintha varázslat történt volna. A platform intézte a hostingot, az SSL automatikusan működött, és a kis mellékprojektünk egyszer csak valóssá vált.

De itt jön a kellemetlen igazság, ami folyamatosan ott kísért a fejemben: a gyors launch nem jelent biztonságos launchot. És mint valaki, aki végignézte, ahogy a vibe coding forradalma kibontakozik, azt hiszem, itt az ideje beszélnünk arról, mit hagy ott valójában ez a délután-és-élő-url pipeline.

Egy friss kutatás 155 publikusan elindított vibe-coded alkalmazást vizsgált meg. Kilencvenkilenc még mindig élő volt és szkennelhető. Az eredmények? Egyszerre biztatók és aggasztóak – és meg kell változtatniuk, ahogy a launch előtti ellenőrzőlistáinkról gondolkodunk.

A jó hír: A titkok rejtve maradnak

ami pozitívan meglepett: a szkennelt appoknak csak 1%-a szivárogtatott ki tényleges titkos kulcsokat a böngészőbe.

Nem voltak felfedett OpenAI API kulcsok, amelyek más költségvetését égették. Nem voltak AWS hitelesítő adatok a kliens-oldali JavaScriptben lebegve. Nem voltak Stripe élő kulcsok, amelyek egy bankszámlát kiüríthettek volna.

Ez számomra valami fontosat mond: a modern AI kódolási platformok tényleg javítottak az alapértelmezett beállításaikon. Amikor új projektet hozol létre a Boltban vagy a Repliten, a platform az edge functions felé terel a titkokkal – ahelyett, hogy a böngésző bundle-be dobálná őket. Ez tényleg jó UX döntés biztonsági szempontból.

De az egy százalék még mindig egy százalék. Egy felfedett kulcs egy 50 ezer dolláros OpenAI számla, egy kompromittált AWS fiók, vagy egy Stripe vita, ami elsüllyeszti a startupod, még mielőtt elindulna. Ne légy te az az egy százalék.

A Supabase probléma, amiről senki sem beszél

Itt kezdődik az igazi probléma.

A live vibe-coded appok 37%-a tartalmaz Supabase anonymous keyt a frontend kódjában. És mielőtt pánikolnál – ez valójában várt. A Supabase úgy lett tervezve, hogy az anon key publikus legyen; az adadbiztonságot a Row Level Security (RLS) politikáknak kellene biztosítaniuk.

Itt a probléma: az RLS opt-in. A táblák alapból teljesen nyitottak. És amikor este 11-kor vibe code-olsz, rohansz a launch deadline felé, könnyedén kihagyhatod azt a checkbboxot.

Minden tábla, ahol az RLS nincs bekapcsolva – vagy még rosszabb, egy lusta using (true) policy – egy szélesre nyitott ajtó bárkinek, aki rendelkezik azzal a publikus anon keyvel. Egy támadónak nem kell feltörnie semmit. Egyszerűen... lekérdezi az adatbázisodat, mert elfelejtettél egy beállítást.

Nem tudom elégszer hangsúlyozni: a passzív szkennelés nem tudja detektálni az RLS hibás konfigurációit. A scanner csak a frontendet látja. A sebezhetőség az adatbázisodban van. Neked kell kézzel ellenőrizned, tábláról táblára, mielőtt élesbe mész.

Ugyanez igaz a Firebase-re (amely a vizsgált appok 4%-ában jelent meg). A security rules nem opcionális kiegészítők. Ezek adják a teljes biztonsági modellt.

Security headers: A láthatatlan teendőlista

Ha soha nem gondoltál a HTTP security headerekre, nem vagy egyedül. A szkennelt appok 91%-a hiányzik a Content-Security-Policy, és 88% beágyazható iframe-ekbe bármelyik weboldalon (helló, clickjacking).

Ezek nem egzotikus sebezhetőségek. Ezek évek óta bevett best practice lépések. A vibe coding pipeline egyszerűen... nem tartalmazza őket alapértelmezetten.

Íme a scan eredményeinek bontása:

  • 91% hiányzik a Content-Security-Policy
  • 88% hiányzik az X-Frame-Options / frame-ancestors
  • 37% hiányzik az X-Content-Type-Options
  • 38% hiányzik a Referrer-Policy
  • 8% hiányzik a Strict-Transport-Security
  • Mindössze 5% rendelkezett az összes security headerrel

A jó hír? A hosting platformok automatikusan kezelik az HSTS-t, szóval az nagyjából fedve van. De a CSP rés nagyon jelentős. Amikor egy AI-írt komponens usergenerated contentet renderel vagy harmadik féltől származó scripteket integrál, a CSP az utolsó védelmi vonal. Nélküle az XSS támadásoknak nincs hova bújniuk.

A launch csiszolatlanság

Ez az a találat volt, amire nem számítottam, de teljesen lekötötte a figyelmemet: a vibe-coded appok 30%-a indul OG tagok nélkül.

Ez azt jelenti, hogy amikor valaki megosztja a termékedet X-en (Twitteren), Discordon vagy LinkedInen, egy csupasz URL-ként jelenik meg előnézeti kép, cím és leírás nélkül. Csak... szöveg. 2024-ben ez amatőrnek hat és убивает a click-through rate-et.

További launch-napi hibák a scanből:

  • 11% nem volt meta description
  • 77% nem volt sitemap.xml
  • Az overall security osztályzatok átlaga B-minusz (84/100) volt, mindössze 13% érdemelt A-t

Az appok nem voltak katasztrófák – egyszerűen csiszolásra szorultak. Ugyaz a sebesség, ami eljuttat a launchig, az a sebesség, ami elfelejteti veled a <meta property="og:title"> tagot.

Az 5 perces pre-launch ellenőrzőlista

Miután átrágtam magam ezen a kutatáson, frissítettem a személyes launch listámat. Íme, mi számít igazán, mielőtt kiposztolod azt a Show HN threadet:

1. Keress titkokat a bundle-ben

Keresd a lebuildelt outputban az sk-, sk_live_, service_role, ghp_ mintákat. Bármi, ami illeszkedik, azonnal rotáld és mozgasd edge functionbe vagy environment variable-be. Egy felfedett kulcs is elég.

2. Auditálj minden Supabase vagy Firebase táblát

Nyisd meg a dashboardot. Minden publikus táblához kell az RLS. Minden policy legyen specifikus – soha using (true). Olvasási hozzáférés egy rosszul konfigurált táblához kiteszheti a teljes user adatbázisodat.

3. Adj hozzá ezeket a security headereket

Content-Security-Policy: frame-ancestors 'none'
X-Frame-Options: DENY
X-Content-Type-Options: nosniff
Referrer-Policy: strict-origin-when-cross-origin

Kezdj Content-Security-Policy-Report-Only-val, ha enforcement nélkül akarsz tesztelni. De deploy-old.

4. Kapcsold ki a production source map-eket

A *.map fájlok debugging aranybánya neked – és a támadóknak is. A legtöbb platformnak van erre toggle-je. Kapcsold off, mielőtt élesbe mész.

5. Add hozzá az Open Graph metadata

Minimumra: og:title, og:description, og:image. A launch posztod megérdemli, hogy jól nézzen ki a timeline-ban.

6. Generálj sitemap.xml-t

A jövőbeli SEO-s énod köszöni majd. A legtöbb platform automatikusan generálja – nézd meg, neked generálódott-e.

A nagyobb kép

Íme a véleményem: a vibe coding nem a probléma. A probléma a rés a "működik a gépemen" és a "production-ready" között. A hagyományos fejlesztők ezt a rést évekig tartó fájdalmas deployokon keresztül tanulták meg. A vibe coderok gyorsabban tanulják – és ez valójában jó.

A platformok javulnak. Az alapértelmezések egyre jobbak. De amíg a biztonsági hardening nem lesz olyan automatikus, mint az SSL tanúsítványok, addig a felelősség rajtunk van, fejlesztőkön, hogy hozzáadjuk azt az ötperces ellenőrzőlistát launch előtt.

A vibe coding sebessége szupererő. A biztonságnak nem kell az árazásnak lennie, amit megfizetsz érte.


Mi a pre-launch biztonsági rutinod? Írd meg a kommentekbe a listád kiegészítéseit – mindig keresem, hogyan fejlesszem a magamét.

Read in other languages:

RU BG UZ EL CS PT PL FI RO TR SV NL NB IT ZH-HANS ES DE DA FR EN