Direct naar de inhoud
Performance Management.com
Start je review

Case · Vibe code check

Eerst laten toetsen, dan pas live. Zo doe je dat slim.

Een adviesbureau bouwde zelf een AI-readiness-assessment in Lovable en wilde hem in de eigen WordPress-site. In plaats van hem meteen live te zetten, lieten ze hem eerst toetsen. Verstandig: geen kwaadaardige code, maar wel vijf punten die vóór livegang geregeld moesten zijn.

Levert de review geen verbeterpunten op, dan crediteren we hem.

Leon Katz

Leon Katz · CIO

Deze check is uitgevoerd door Leon Katz.

De situatie: één HTML-bestand, met alles erin

De opdrachtgever leverde een zelfstandig HTML-bestand aan: een interactieve, meerstaps vragenlijst die de bezoeker in de browser doorloopt, met een leadformulier (naam, zakelijk e-mailadres, functie, branche). Antwoorden, scores en leadgegevens gaan vanuit de browser rechtstreeks naar een externe clouddatabase; benchmarkcijfers komen uit diezelfde database terug.

Werkend, oogt goed, iedereen enthousiast. En dan de echte vraag: kan dit veilig live, in een site waar klanten hun gegevens achterlaten?

Wat we aantroffen

Vijf punten vóór livegang

Eerst het goede nieuws: geen kwaadaardige code, geen verborgen doorverwijzingen, geen tracking van derden, geen versluierde scripts. Daarna de punten die wél aandacht vroegen.
  • Publieke sleutel in de code

    De toegangssleutel tot de database staat in de broncode. Of ingezonden namen en e-mailadressen door derden uit te lezen zijn, hangt dan volledig af van de rechten aan databasezijde. Bij één verkeerde instelling ligt alles open.

  • Persoonsgegevens naar een clouddienst

    Er worden persoonsgegevens verwerkt bij een externe partij: dat valt onder de AVG. Verwerkersovereenkomst, privacyverklaring en hostinglocatie binnen de EU waren nog niet geregeld.

  • Onbeperkt inzenden

    Iedere browser mag onbeperkt inzenden. Geautomatiseerd misbruik vervuilt de database en de benchmarkcijfers, en kost geld als de dienst per verzoek afrekent.

  • Afhankelijk van een externe CDN

    Een script wordt bij elk bezoek van een derde partij geladen: een afhankelijkheid, en het IP-adres van elke bezoeker gaat mee.

Vijfde punt: de opmaak in het bestand botst met het WordPress-thema. Direct plakken in een HTML-blok geeft stijl- en scriptconflicten, dus de integratie moest geïsoleerd.

Het advies

Van bevinding naar concrete maatregel

  1. 01

    Rechten dichtzetten

    De anonieme rol mag alleen toevoegen, niet lezen; leesrechten alleen op een weergave zonder persoonsgegevens. Actief getest, niet aangenomen. Plus een limiet op verzoeken per sleutel als vangnet.

  2. 02

    AVG op orde

    Verwerkersovereenkomst met de databaseprovider, vermelding in de privacyverklaring, hosting binnen de EU, en een privacyverwijzing bij het formulier.

  3. 03

    Misbruik afremmen

    Rate limiting, een honeypot-veld en waar nodig een captcha; het script lokaal hosten in plaats van via de CDN.

  4. 04

    Geïsoleerd integreren

    Als statisch bestand buiten de WordPress-content, ingeladen via een iframe met strakke sandbox-rechten. Geen conflicten met thema of plugins, en een update is één bestand vervangen.

Checklist

Wat er vóór livegang afgevinkt moest zijn

  • Rechten van de database geverifieerd en getest: anonieme rol kan geen persoonsgegevens uitlezen.
  • Limiet op API-verzoeken ingesteld; testinzending komt correct binnen.
  • Verwerkersovereenkomst gesloten, hostinglocatie gecontroleerd, privacyverklaring aangevuld.
  • Externe bibliotheek lokaal gehost; honeypot en rate limiting ingericht.
  • Iframe getest op desktop en mobiel, inclusief hoogtegedrag en foutscenario's (geblokkeerde scripts, onbereikbare database).
  • Eén bronlocatie en één contactpersoon voor updates afgesproken.

Wat de check bewust niet is: een juridisch oordeel over de app zelf. De werking van de applicatie en de configuratie van de database blijven bij de opdrachtgever; wij toetsen, adviseren en integreren.

Dat het werkt, bewijst dat het idee klopt. Dat het veilig kan, is een tweede vraag, en die stelde deze opdrachtgever zelf, vóórdat er klanten in gingen. Dat is de pluim die deze case verdient: niet dat er punten waren (die zijn er altijd), maar dat ze gevonden werden voordat het ertoe deed.

Eerst toetsen, dan live. Zo doe je dat slim.

Verder lezen

De routes achter deze case

Ook iets gebouwd met AI?

Laat het toetsen voordat er echte gebruikers in gaan. Je krijgt een rapport met prioriteiten en een concreet advies per punt.

Levert de review geen verbeterpunten op, dan crediteren we hem.