Naar de inhoud

Veilig prompten voor code: prompts die helpen, en waar de grens ligt

Bijgewerkt op · 5 minuten lezen · door Enes

In het kort

Goede prompts verkleinen de kans op beveiligingsfouten in AI-code. Vraag expliciet om databaseregels per gebruiker en geheime sleutels alleen op de server. Laat controles op de server doen in plaats van in de browser. Gebruik daarbij de officiële voorbeelden van Supabase en Lovable. Maar een prompt bewijst niets: alleen een test laat zien of de beveiliging echt werkt.

In dit artikel (8 delen)
  1. Waarom veilig prompten helpt
  2. De basisregel: de browser beslist nooit
  3. Veilig prompten voor uw database (Supabase)
  4. Veilig prompten voor sleutels en geheimen
  5. Prompts voor controles en betalingen
  6. Prompts en afspraken voor AI-agenten
  7. Wat een prompt niet oplost
  8. Na het prompten: testen

Waarom veilig prompten helpt

Veilig prompten betekent: de AI-tool expliciet vragen om beveiliging die hij anders vaak overslaat. Denk aan databaseregels, geheime sleutels op de server en controles op de server. Een AI-tool doet wat u vraagt, en vult de rest zelf in. Vraagt u om een werkende app, dan krijgt u een werkende app. Beveiliging die in een demo niets zichtbaar verandert, laat de tool dan vaak weg. Door er expliciet om te vragen, wordt die stap wel gezet.

Hieronder staan prompts die u kunt overnemen. Ze zijn in het Engels, omdat AI-tools Engelse technische opdrachten het nauwkeurigst volgen. De uitleg staat erbij in het Nederlands. Een deel komt letterlijk uit de documentatie van Lovable. De rest is gebaseerd op de officiële adviezen van Supabase en OWASP.

De basisregel: de browser beslist nooit

Lovable zegt het in de eigen beveiligingsdocumentatie zo: code in de browser is altijd openbaar en mag nooit beveiligingsbeslissingen nemen. Die horen op de server, in serverfuncties, en in de regels van de database. Zet deze regel aan het begin van elk project, bijvoorbeeld in de projectinstructies van uw tool:

"Treat all frontend code as public. Never make security decisions in the browser. Put secret keys, price calculations, permission checks and validation on the server or in database policies."

Veilig prompten voor uw database (Supabase)

Supabase heeft een officiële prompt voor AI-tools om goede databaseregels (Row Level Security) te schrijven. De kern: gebruik altijd auth.uid() om de ingelogde gebruiker te bepalen. Schrijf een aparte regel voor lezen, toevoegen, wijzigen en verwijderen in plaats van één regel voor alles. En controleer of RLS aan staat. Een prompt in die geest:

"Enable Row Level Security on every table that contains user or business data. Write separate policies for SELECT, INSERT, UPDATE and DELETE. Use auth.uid() so users can only access their own rows. Never use USING (true) on tables with personal data. List every table with its RLS status and policies when you are done."

Om bestaande regels te laten nalopen, staat deze letterlijke prompt in de documentatie van Lovable: "Review RLS policies to ensure users can only access their own data and shared data is properly protected".

Veilig prompten voor sleutels en geheimen

Uit de documentatie van Lovable: "Add an API key for Stripe payments securely without exposing it in the frontend code". En om te controleren wat er al staat: "Review frontend code for exposed secrets, API keys, or sensitive information".

Zelf aanvullen kan zo: "Only the Supabase anon or publishable key may appear in frontend code. The service_role key, Stripe secret keys and AI provider keys must only be used in server functions via environment variables."

Prompts voor controles en betalingen

Uit de documentatie van Lovable: "Move validation logic from React components to Edge Functions for better security". Zo kan een bezoeker de controle niet omzeilen door de code in zijn browser aan te passen.

Voor betalingen en andere berichten van buiten: "Verify the signature of every incoming webhook (Stripe, Clerk, Resend) before processing it. Calculate prices and discounts on the server, never trust amounts sent from the browser."

Voor elke pagina of functie met gegevens van klanten: "For every endpoint, check not only that the user is logged in, but also that this user owns the requested record." Zo ziet niemand de bestelling van een ander door een nummer in de adresbalk te veranderen.

Prompts en afspraken voor AI-agenten

Een AI-agent die zelf opdrachten uitvoert, kan ook zelf schade doen. In juli 2025 wiste een agent van Replit een productiedatabase, ondanks herhaalde instructies om niets aan te raken. Cursor raadt in de eigen documentatie over agentbeveiliging aan goed te letten op wat een agent mag uitvoeren. Let ook op welke koppelingen (MCP) u toestaat.

Een prompt helpt: "Never run destructive commands such as DROP, DELETE or migrations on production. Ask for my approval before any command that changes data." Maar de echte bescherming is technisch. Geef de agent geen toegang tot uw productiedatabase en houd test en productie gescheiden. Zorg voor een back-up die de agent niet kan wissen.

Ook voor softwarepakketten: "Only use well-known, existing packages and tell me the exact package name so I can check it." Spracklen en collega’s lieten op USENIX Security 2025 zien dat 19,7% van de door AI aanbevolen pakketten niet bestond. Zoek een nieuw pakket daarom zelf op voordat u het installeert.

Wat een prompt niet oplost

Een prompt verkleint de kans op een fout, maar bewijst niet dat de fout er niet is. Drie redenen. 1. De AI kan uw instructie half of verkeerd uitvoeren. Lovable had een eigen controle die keek óf er een databaseregel bestond, niet of die regel echt werkte. Een regel die alles toestond, kwam er gewoon doorheen.

2. Of een regel echt werkt, ziet u alleen aan het gedrag: kan gebruiker B bij de gegevens van gebruiker A? Dat is een test, geen instructie. 3. Een prompt is geen slot. De Replit-agent negeerde zijn instructies. Bij Cursor bleek in 2025 dat een agent via verborgen tekst zijn eigen instellingen kon laten aanpassen. Rechten moet u technisch beperken.

Na het prompten: testen

Loop na het bouwen zelf de basis na. Test met twee accounts, zoek naar sleutels in de browser en controleer de RLS-regels per tabel. Hoe dat werkt, staat in onze artikelen over Supabase RLS en API-sleutels. En in de gratis checklist veilig bouwen met AI.

Werkt uw app met klantgegevens, laat dan een mens testen of alles echt dicht zit. Een Scan (vanaf € 295 excl. btw) is een scan die wij met de hand nalopen, geen pentest. Een Inbraaktest (vanaf € 2.950 excl. btw) of De Inbraaktest Totaal (vanaf € 4.950) test ook de logica, inclusief hertest. Wij testen alleen na schriftelijke toestemming van de eigenaar van het systeem.

Veelgestelde vragen

Waarom staan de prompts in het Engels?

AI-codetools volgen Engelse technische opdrachten het nauwkeurigst, en de termen in de code zijn ook Engels. U kunt de prompts letterlijk overnemen. De uitleg staat er in het Nederlands bij.

Is mijn app veilig als ik veilig prompt?

Niet vanzelf. Ze verkleinen de kans op fouten, maar de AI kan een instructie half of verkeerd uitvoeren. Of de beveiliging werkt, ziet u alleen door te testen.

Waar zet ik deze prompts?

De algemene regels het liefst in de projectinstructies of regelbestanden van uw tool, zodat ze bij elke opdracht meegaan. De controleprompts gebruikt u na het bouwen en na elke grote wijziging.

Kan ik de AI zijn eigen code laten controleren?

Ja, dat vindt soms fouten. Maar dezelfde AI kan dezelfde fout opnieuw over het hoofd zien. Gebruik het als extra stap, niet als vervanging van een test door een mens.

Verder lezen

Bronnen

  1. Supabase Docs: AI-prompt voor RLS-policiessupabase.com
  2. Supabase Docs: Row Level Securitysupabase.com
  3. Lovable Docs: security best practicesdocs.lovable.dev
  4. Cursor: securitycursor.com
  5. Cursor Docs: agent securitycursor.com
  6. OWASP GenAI: LLM01:2025 Prompt Injectiongenai.owasp.org
  7. The Register: Replit wiste productiedatabasetheregister.com
  8. The Hacker News: Cursor herstelt lekken (2025)thehackernews.com
  9. USENIX Security 2025: package hallucinations (Spracklen e.a.)usenix.org

Lees ook deze artikelen

Meer uitleg in gewone taal, met bronnen.

Naar de kennisbank

Liever laten testen dan zelf uitzoeken

Bij dit onderwerp past De Inbraaktest. In een gratis intake kijken we samen of dat klopt.

+31 485 234 002info@blackboxservice.nl

Geen verplichtingen, geen verkooppraatje.

Deze site gebruikt geen trackingcookies en laadt niets van derden.

Voor u gaat

Check uw website en e-mail gratis

In een paar seconden ziet u hoe uw website en e-mail ervoor staan. Wij benaderen uw systeem niet en bewaren niets.