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 completVérifie si ton site est concerné par cette faille.
Scanner mon app