RLS et Supabase
1 min de lecture
La clé anon est publique, c'est voulu
La clé `anon` de Supabase est faite pour vivre dans le navigateur : elle apparaît forcément dans le bundle JS de n'importe quelle app Supabase. Ce n'est PAS une fuite en soi, et detektd ne la remonte jamais comme une faille à elle seule.
RLS est la vraie barrière
Ce qui protège vos données, c'est Row Level Security (RLS) sur chaque table, pas le secret de la clé anon. Une table avec RLS désactivée, ou une policy qui autorise `select`/`insert`/`delete` sans filtrer par propriétaire, est lisible et modifiable par n'importe qui possédant la clé anon, c'est-à-dire n'importe quel visiteur de votre site.
À quoi ressemble une policy correcte
Activez RLS sur chaque table, puis écrivez des policies qui filtrent explicitement par propriétaire (typiquement `auth.uid() = user_id`) plutôt que d'autoriser un accès large "pour que ça marche" (`using (true)`).
-- 1. turn RLS on for the table alter table public.orders enable row level security; -- 2. a row is only visible to the user who owns it create policy "select own orders" on public.orders for select using (auth.uid() = user_id); -- 3. same for writes, never just "using (true)" create policy "insert own orders" on public.orders for insert with check (auth.uid() = user_id);
Le correctif fourni avec chaque finding RLS donne l'exemple de policy adapté à la table concernée dans votre propre schéma, pas cet exemple générique.