Votre base de données Supabase peut être lue par n’importe qui
Instructions générales. Ouvrez cet article depuis votre rapport PageCheck pour le voir complété avec les enregistrements de votre domaine et les étapes exactes de votre hébergeur DNS.
De quoi s’agit-il
Votre site conserve son contenu dans une base de données Supabase. La page accède à cette base avec une clé publique qui fait partie du code de la page, si bien que le navigateur de chaque visiteur la possède. Cette clé est faite pour être publique — ce qui protège les données, ce sont des règles d’accès sur chaque table (Supabase appelle cela Row Level Security).
Ce qui ne va pas
Votre base de données Supabase répond à la clé publique et liste ses tables : Row Level Security est donc désactivé ou incomplet. Toute personne qui ouvre votre site peut lire, et souvent modifier ou supprimer, les données qui se trouvent derrière.
Comment corriger
1. Activez les règles d’accès pour chaque table. Dans le tableau de bord Supabase, ouvrez Authentication → Policies (ou Table editor → chaque table → Row Level Security) et activez Row Level Security pour chaque table du schéma public. Une fois activée, sans aucune policy, la clé publique ne peut rien lire.
2. Ajoutez une policy uniquement pour ce dont le public a besoin. Si une partie d’une table doit vraiment être publique (par exemple une liste de produits), ajoutez une policy qui autorise la lecture de ces seules lignes et colonnes. Tout le reste reste privé et n’est accessible que par votre propre code côté serveur, qui utilise une clé secrète, jamais la clé présente dans la page.
3. Vérifiez depuis l’extérieur. Ouvrez votre site dans une fenêtre de navigation privée et vérifiez qu’il fonctionne toujours, puis relancez cette vérification. Vous n’avez pas besoin de changer la clé publique — elle est faite pour être publique ; ce sont les règles d’accès qui protègent les données.
Lock down my Supabase database: it is readable with the public anon key because Row Level Security is off. Project: <my .supabase.co project>. Steps: 1. List every table in the public schema and tell me which, if any, genuinely need to be readable by anonymous visitors. 2. Enable Row Level Security on every table in the public schema. 3. For the tables that must be public, add the narrowest SELECT policy that serves the site (only the needed rows and columns); leave the rest with no anon policy. 4. Make sure the app reads private data only through server-side code using the service_role key, never the anon key in the browser. 5. Give me the SQL for the policies and the exact dashboard steps, and tell me how to verify from an anonymous client that the private tables return nothing. Do not rotate the anon key — it is public by design; the fix is the access rules.
Objet : example.com – notre base de données Supabase peut être lue par n’importe qui Bonjour, Un contrôle du site (PageCheck) a constaté que la base de données Supabase de notre site peut être lue avec la clé publique présente dans la page, car Row Level Security est désactivé. Merci de : 1. Activer Row Level Security pour chaque table du schéma public. 2. Ajouter une policy de lecture uniquement pour les données qui doivent vraiment être publiques, et garder tout le reste privé. 3. Confirmer depuis l’extérieur que les tables privées ne peuvent plus être lues et que le site fonctionne toujours. La clé publique n’a pas besoin d’être changée — elle est faite pour être publique. Merci !
Analysez votre site pour savoir s’il a ce problème. Analyser un site