Categorieën bekijken

Wat zijn de beveiligingsrisico’s van vibecoded websites?

6 min read

De beveiligingsrisico’s van vibecoded websites zijn aanzienlijk en structureel van aard. AI-gegenereerde code bevat in bijna de helft van de gevallen beveiligingsfouten — van SQL-injecties en cross-site scripting tot hardcoded wachtwoorden en ontbrekende toegangscontroles. Deze kwetsbaarheden ontstaan niet per ongeluk, maar door de manier waarop AI-modellen code genereren: zonder beveiligingscontext en zonder zelfcontrole. Hieronder beantwoorden we de belangrijkste vragen over vibe coding-beveiliging en vibecoded website-risico’s.

Welke kwetsbaarheden komen het vaakst voor in vibecoded code? #

AI-gegenereerde code bevat structureel terugkerende beveiligingskwetsbaarheden. De meest voorkomende zijn SQL-injectie, cross-site scripting (XSS), hardcoded credentials, ontbrekende inputvalidatie en verouderde of kwetsbare dependencies. Deze fouten komen niet incidenteel voor — ze zijn een direct gevolg van hoe AI-modellen code genereren.

De belangrijkste kwetsbaarheden op een rij:

  • SQL-injectie: AI-tools gebruiken regelmatig onveilige string-concatenatie in plaats van geparametriseerde queries, waardoor databases direct aanvalbaar zijn.
  • Cross-site scripting (XSS): verschijnt in het overgrote deel van AI-gegenereerde code doordat output niet wordt gesanitiseerd.
  • Hardcoded credentials: wachtwoorden en API-sleutels worden rechtstreeks in de broncode opgenomen — een fout die bij AI-code aanzienlijk vaker voorkomt dan bij menselijk geschreven code.
  • Ontbrekende authenticatie en access control: volledige beveiligingslagen worden simpelweg niet geïmplementeerd, omdat de AI er niet om gevraagd werd.
  • Verouderde dependencies: modellen reproduceren patronen uit hun trainingsdata, inclusief libraries met bekende kwetsbaarheden.

Het cruciale verschil met menselijke fouten: bij vibe coding zonder beveiligingscontext gaat het niet om een typefout of vergissing. Het zijn complete beveiligingslagen die ontbreken omdat het AI-model alleen doet wat er gevraagd wordt — zonder de onuitgesproken beveiligingsaannames die een ervaren ontwikkelaar automatisch toepast.

Waarom controleert AI-gegenereerde code zichzelf niet op fouten? #

Large language models genereren code op basis van waarschijnlijkheid, niet op basis van begrip. Ze produceren output die er syntactisch correct uitziet en functioneel werkt, maar ze hebben geen runtime-bewustzijn en geen begrip van het beveiligingslandschap van jouw specifieke applicatie. Zelfcontrole is daardoor structureel onmogelijk.

Dit komt door drie fundamentele beperkingen. Ten eerste is het generatieve proces probabilistisch: een LLM voorspelt het meest waarschijnlijke volgende token, niet het meest veilige. Dit leidt tot code die aannemelijk lijkt maar subtiele beveiligingsfouten bevat. Ten tweede zijn de trainingsdata onbetrouwbaar — modellen leren van miljoenen publieke repositories, en die bevatten structureel onveilige patronen die vervolgens worden gereproduceerd en versterkt.

Ten derde ontbreekt het aan contextbewustzijn. Een beveiligingsbewuste ontwikkelaar kent het dreigingsmodel, de interne standaarden en de compliancevereisten van een project. Een AI-model ziet alleen de prompt en genereert een antwoord zonder die bredere context. Als je niet expliciet om inputvalidatie of autorisatie vraagt, wordt het niet gebouwd.

Een LLM vragen om de veiligheid van zijn eigen code te beoordelen is daarom geen verificatie — het is zelfattestatie zonder onafhankelijke controle.

Hoe groot is het risico op datalekken bij vibecoded websites? #

Het risico op datalekken is concreet en neemt toe. Bij vibecoded applicaties die publiek zijn gedeployd, worden regelmatig gevoelige gegevens blootgesteld — waaronder klantgegevens, medische informatie en financiële data — zonder authenticatie of access controls. Dit maakt datalekken niet een theoretisch risico, maar een praktisch en veelvoorkomend probleem.

Voor Nederlandse organisaties zijn de AVG/GDPR-implicaties bijzonder relevant. Wanneer een vibecoded backend persoonsgegevens verwerkt zonder adequate toegangscontroles, ontbreekt er niet alleen technische beveiliging maar ook juridische basis. De categorieën data die het vaakst in gevaar komen zijn contactgegevens, inlogdata, API-sleutels en — in het ergste geval — bijzondere persoonsgegevens zoals medische of financiële informatie.

Typische scenario’s zijn backends die gebruikersdata retourneren zonder autorisatiecontroles, API-sleutels die in client-side code staan, en applicaties die functioneel correct werken maar waar basale beveiligingslagen volledig ontbreken. Het financiële en juridische risico is navenant: datalekken door onvoldoende beveiliging kunnen leiden tot aanzienlijke boetes en reputatieschade.

Wat is het verschil tussen vibecoded en professioneel beveiligde code? #

Het kernverschil is dat professioneel ontwikkelde code beveiliging als uitgangspunt neemt, terwijl vibecoded output beveiliging alleen toepast wanneer er expliciet om gevraagd wordt. Bij professionele ontwikkeling zijn threat modeling, code reviews, dependency auditing en security testing standaardonderdelen van het proces — bij vibe coding ontbreken deze stappen vrijwel altijd.

Concreet zien we deze structurele verschillen:

  • Threat modeling: professionele teams brengen vooraf in kaart welke bedreigingen relevant zijn. Bij vibe coding wordt hier niet over nagedacht.
  • Code review: elke professionele codewijziging wordt door een tweede persoon beoordeeld. AI-gegenereerde code wordt vaak direct overgenomen.
  • Dependency management: professionele workflows controleren actief op kwetsbare libraries en versiebeheer. AI-modellen suggereren regelmatig verouderde of zelfs niet-bestaande packages.
  • Security testing: professionele pipelines bevatten geautomatiseerde beveiligingsscans (SAST/DAST) en penetratietests. Bij vibe coding stopt het proces zodra de code “werkt.”

Dat is precies het gevaar: “het werkt” en “het is veilig” zijn twee fundamenteel verschillende standaarden. Vibecoded applicaties passeren vaak basale functionele tests, terwijl de beveiligingsrisico’s zich verbergen in werkende code.

Wanneer is een vibecoded website acceptabel en wanneer niet? #

Een vibecoded website kan acceptabel zijn voor interne prototypes, persoonlijke projecten en statische pagina’s zonder gebruikersdata of backend-functionaliteit. Zodra er persoonsgegevens, betalingen of authenticatie in het spel zijn, is vibe coding zonder professionele beveiligingsreview onacceptabel.

Factoren die het risico verhogen:

  • Verwerking van persoonsgegevens (PII) of bijzondere persoonsgegevens
  • Betalingsfunctionaliteit of financiële transacties
  • Gebruikersauthenticatie en rolgebaseerde toegang
  • Compliance-vereisten zoals AVG/GDPR of PCI-DSS
  • Publieke toegankelijkheid van de applicatie

Factoren die het risico verlagen:

  • Geen verwerking van gebruikersdata
  • Intern gebruik binnen een beveiligde omgeving
  • Puur statische content zonder database-interactie
  • Gebruik als tijdelijk prototype dat nooit naar productie gaat

Voor organisaties in de publieke sector, het onderwijs of de zakelijke dienstverlening geldt dat de verantwoordelijkheid voor databeveiliging en compliance zwaarder weegt dan het gemak van snelle oplevering.

Hoe kun je de beveiliging van een vibecoded website verbeteren? #

De beveiliging van een vibecoded website verbeter je door onafhankelijke verificatie toe te voegen aan het ontwikkelproces: geautomatiseerde beveiligingsscans, menselijke code review op kritieke punten, en een structureel beveiligingsbeleid. Behandel AI-gegenereerde code altijd als onbetrouwbare code die verificatie nodig heeft.

Concrete stappen die je kunt nemen:

  1. Beveiligingsaudit door gekwalificeerde ontwikkelaars: laat kritieke onderdelen — authenticatie, datatoegang, inputafhandeling — altijd reviewen door iemand met beveiligingskennis.
  2. Geautomatiseerde scanning (SAST/DAST): voer statische en dynamische beveiligingsanalyses uit vóór deployment om bekende kwetsbaarheden te detecteren.
  3. Dependency management: controleer alle gebruikte libraries op bekende kwetsbaarheden en zorg voor actueel versiebeheer.
  4. Secrets management: verwijder hardcoded wachtwoorden en API-sleutels en gebruik een veilige vault-oplossing.
  5. Beveiligingsgerichte prompts: neem expliciet beveiligingseisen op in elke prompt — vraag om inputvalidatie, geparametriseerde queries en autorisatiecontroles.

Voor organisaties die werken met het Microsoft Power Platform bieden wij een Compliance & Security Scan aan die alle Power Apps en Power Automate-flows in kaart brengt en analyseert op risico’s, kwetsbaarheden en compliancegaten. Zo krijg je concreet inzicht in waar de zwakke plekken zitten — ook wanneer AI-gegenereerde componenten onderdeel zijn van je omgeving.

De beveiligingsrisico’s van vibecoded websites zijn reëel, maar niet onoverkomelijk. De sleutel is om snelheid en gemak niet boven veiligheid te stellen, en om altijd een menselijke controlelaag in te bouwen. Wil je weten hoe jouw organisatie ervoor staat op het gebied van beveiliging en compliance? Neem dan contact met ons op voor een vrijblijvend gesprek.