Een onderzoek toonde aan dat AI-gegenereerde code 1,7 keer vaker ernstige problemen heeft en 2,74 keer gevoeliger is voor beveiligingsproblemen dan door mensen geschreven code. Als je iets hebt gebouwd met Cursor, Claude Code of GitHub Copilot, bevat je project waarschijnlijk minstens één van de vijf meest voorkomende beveiligingsgaten. Dit zijn ze en hoe je ze kunt vinden.
- 45% van AI-gegenereerde code bevat minstens één beveiligingsprobleem
- 1,7 keer vaker ernstige problemen ten opzichte van door mensen geschreven code
- 2,74 keer gevoeliger voor beveiligingsproblemen specifiek
- Meest voorkomend: Hardcoded API-sleutels, ontbrekende invoervalidatie, geen beveiliging op rijniveau
- Tijd voor controle: 2-3 uur voor een typisch vibe-coded project
- Laatst geverifieerd: April 2026
Waarom AI-code kwetsbaar is
AI-codeertools optimaliseren voor "werkt het?" in plaats van "is het veilig?" Wanneer je Cursor vraagt om "gebruikersauthenticatie toe te voegen," genereert het code die gebruikers verifieert. Het voegt niet automatisch rate limiting, invoerreiniging, CSRF-bescherming of veilig sessiebeheer toe — omdat je dat niet hebt gevraagd.
De AI schrijft exact wat je beschrijft. Beveiliging vereist het beschrijven van dingen waar je niet automatisch aan denkt — edge cases, schadelijke invoer, ongeautoriseerde toegangspatronen. Als het niet in je prompt staat, staat het niet in je code.
De 5 meest voorkomende beveiligingsproblemen
1. API-sleutels hardcoded in frontend-code. AI plaatst API-sleutels regelmatig direct in client-side JavaScript of React-componenten. Iedereen kan ze zien door DevTools in de browser te openen. Oplossing: Verplaats alle sleutels naar omgevingsvariabelen (.env bestanden) en benadruk ze alleen server-side. Tijd: 15 minuten.
2. Geen beveiliging op rijniveau in databases. Als je Supabase gebruikt (algemeen in vibe coding), geeft AI-gegenereerde code vaak elke geverifieerde gebruiker toegang tot alle gegevens van andere gebruikers. Oplossing: Schakel Row Level Security in en voeg beleidsregels per gebruiker toe. Tijd: 30 minuten.
3. Geen server-side invoervalidatie. Formulieren accepteren alles — scripts, te grote payloads, SQL-injectie pogingen. De AI voegt client-side validatie toe (die gebruikers kunnen omzeilen) maar slaat server-side validatie over. Oplossing: Voeg Zod-schema's of soortgelijke validatie toe op elk API-eindpunt. Tijd: 30 minuten per eindpunt.
4. Geen rate limiting. Iedereen kan je API duizend keer per seconde aanroepen. Geen begrenzing, geen bescherming tegen misbruik. Oplossing: Voeg rate limiting toe via Upstash Redis of soortgelijk. Tijd: 20 minuten.
5. Onbeveiligde routes. Dashboard-pagina's, beheerpanelen en gebruikersgegevens eindpunten laden zonder te controleren of de gebruiker is ingelogd. Oplossing: Voeg verificatie middleware toe aan elke beveiligde route. Tijd: 15 minuten.
Krijg je waarde hieruit? We publiceren wekelijks beveiligingsgidsen voor AI-gebouwde projecten. Sluit je aan bij lezers die veilig bouwen →
Hoe je project te controleren
Werk deze checklist af voor elk project gebouwd met AI-codeertools:
Zoek je hele codebase naar hardcoded sleutels. Voer uit: grep -r "sk-" . && grep -r "api_key" . && grep -r "secret" . in je projectmap. Alle overeenkomsten in frontend-bestanden zijn kritieke beveiligingsproblemen.
Controleer elk API-eindpunt op invoervalidatie. Open elk API-routebestand. Als het rechtstreeks req.body gebruikt zonder validatie, is het kwetsbaar.
Verifieer databasebeveiliging. Bij gebruik van Supabase, controleer het tabblad Authentication → Policies. Als er geen RLS-beleidsregels zijn, kan elke gebruiker alle gegevens van andere gebruikers zien.
Test verificatie op elke pagina. Open je browser in incognito-modus (niet ingelogd) en navigeer naar elke pagina in je app. Als er dashboard- of gebruikersspecifieke pagina's laden, is die route onbeveiligd.
Controleer op rate limiting. Probeer je API-eindpunt 100 keer achter elkaar aan te roepen met een eenvoudig script. Als alle 100 slagen, heb je geen rate limiting.
Voor een volledige beveiligingschecklist, zie onze volledige gids voor het beveiligen van vibe-coded apps. Voor de meest voorkomende fouten en hun oplossingen, lees 5 beveiligingsfouten die elke vibe coder maakt.
De mentaliteitsverandering
AI schrijft code die werkt. Jij moet ervoor zorgen dat de code veilig is. Dit zijn twee verschillende vaardigheden. Elke prompt naar een AI-codeergereedschap moet beveiligingsvereisten naast functionele vereisten bevatten. "Voeg gebruikersauthenticatie toe met rate limiting, invoervalidatie en beveiligde routes" levert dramatisch veiligere code op dan "voeg gebruikersauthenticatie toe."
Onze Prompt Optimizer kan je helpen deze beveiligingsspecificaties automatisch aan elke codeerprompt toe te voegen.
Dit is wat we elke week doen. Eén diepgravend artikel over AI-tools, workflows en eerlijke meningen — geen hype, geen vulmiddel. Sluit je bij ons aan →
Disclosure: Enkele links in dit artikel zijn affiliate-links. We raden alleen tools aan die we persoonlijk hebben getest en regelmatig gebruiken. Zie ons volledige disclosure beleid.