← Terug naar de blog
BeveiligingScanaris Team · 2 min lezen · July 12, 2026

Supabase-beveiliging: wat je moet nakijken voordat je lanceert

Supabase geeft je in minuten een database en een API, en dat is precies het gevaar: de API ligt vanaf het eerste moment open. Configureer je de beveiliging niet, dan kan iedereen met je publieke sleutel je tabellen lezen en beschrijven. Dit is wat je moet nakijken.

RLS aan op ELKE tabel

Row Level Security is de belangrijkste barrière van Supabase. Zonder kan de anon-sleutel hele tabellen rechtstreeks vanuit de browser opvragen. De klassieke vibe-coderfout is snel een nieuwe tabel opzetten en vergeten RLS aan te zetten.

Check tabel voor tabel in het dashboard: verschijnt er een zonder RLS, dan ligt die open voor het publiek. Aanzetten alleen is ook niet genoeg: een tabel met RLS aan maar zonder policies weigert alles, en een met een te ruime policy beschermt niets.

service_role tegenover anon

De anon-sleutel is openbaar en gaat in de frontend: die is bedoeld om door RLS bestuurd te worden. De service_role-sleutel omzeilt RLS volledig en heeft volledige toegang. Die mag nooit in de browser of in een NEXT_PUBLIC_-variabele verschijnen.

Gebruik 'm alleen op de server, in edge functions of vertrouwde backends. Vermoed je een lek, roteer 'm dan meteen vanuit het dashboard.

Policies die echt weerspiegelen wie wat mag

Een policy van true voor iedereen laat de tabel open, zelfs met RLS aan. Schrijf specifieke policies: laat een gebruiker alleen zijn eigen rijen lezen en bewerken, meestal door auth.uid() te vergelijken met de eigenaarskolom. Splits de regels per operatie (select, insert, update, delete): soms wil je lezen toestaan maar verwijderen niet.

Storage: buckets hebben ook regels

Bestandsopslag gebruikt eigen policies. Een openbare bucket serveert elk bestand via URL aan iedereen die 'm heeft. Beslis bewust welke buckets openbaar zijn en bescherm de rest met gebruikersgebaseerde policies. Zet privédocumenten in privébuckets, niet in een openbare met moeilijk te raden namen.

Secrets en sleutels uit de frontend

Naast de service_role: check dat er geen sleutels van derden (Stripe, e-mail, AI) in de client-JavaScript zijn gebakken. AI zet ze daar soms neer om iets snel werkend te krijgen, en ze blijven voor altijd zichtbaar.

Scanaris kijkt je Supabase voor je na

Scanaris bevat een optionele Supabase-audit die checkt of je tabellen RLS hebben en sleutels detecteert die in de frontend zijn blootgesteld. Het is een read-only check op wat al openbaar is, en elke bevinding komt met een prompt klaar om in je AI te plakken. Draai 'm vóór de lancering en je weet of je een deur hebt opengelaten.

Hoe staat je site ervoor?

Laat Scanaris er even overheen gaan en check het in 30 seconden, gratis.

Mijn site scannen

Gerelateerde checks

Beveiligingsgidsen per stack