Stripe & SupabaseSévérité critique

RLS Supabase désactivé ou mal configuré

La clé anon de Supabase est publique par design — elle est dans ton bundle JS. Row Level Security (RLS) est la seule chose qui empêche n'importe qui d'utiliser cette clé pour lire directement le contenu de ta base.

Deux variantes de cette faille

  • Table lisible sans authentification — RLS activé mais avec une policy trop permissive (USING (true)), ou RLS carrément désactivé sur la table.
  • Clé service_role exposée — cette clé contourne RLS entièrement. Si elle se retrouve côté client, c'est un accès total en lecture/écriture sur toute la base, faille critique.

Le correctif

ALTER TABLE profiles ENABLE ROW LEVEL SECURITY;

CREATE POLICY "users_read_own_profile" ON profiles
  FOR SELECT
  TO authenticated
  USING (auth.uid() = user_id);

Si une clé service_role a fui, fais-la pivoter immédiatement dans le dashboard Supabase — elle ne doit jamais quitter le serveur.

Guide complet des trois pièges RLS les plus fréquents et checklist avant mise en prod :

Lire l'article complet

Vérifie si ton site est concerné par cette faille.

Scanner mon app