← Toutes les vérifications
SécuritéSévérité typique: Critique

Détecteur de base de données ouverte

Vérifie si les tables Supabase ou la base Firebase de ton site peuvent être lues par n'importe qui, sans connexion.

Vérification gratuite en direct

Nous trouvons ton projet Supabase ou Firebase dans le code public de ton site et vérifions, avec la même clé publique que reçoivent tes visiteurs, si ses tables peuvent être lues sans connexion. Nous comptons seulement les lignes ; nous ne téléchargeons jamais de données.

Vérifie-le gratuitement dans ton tableau de bord

Compte gratuit, prêt en 30 secondes. On compte seulement les lignes ; on ne télécharge jamais de données.

Ce qu'elle vérifie

Ce scanner cherche dans le JavaScript public de ton site l'adresse de ton projet Supabase ou de ta Realtime Database Firebase et la clé publique utilisée par le navigateur. Avec cette même clé, comme n'importe quel visiteur, il vérifie quelles tables répondent sans connexion. Il ne fait que compter les lignes : il ne télécharge ni ne conserve aucune donnée.

Pourquoi ça compte

Dans Supabase, la clé publique est faite pour être dans le navigateur : ce qui protège les données, ce sont les politiques de Row Level Security. Si une table n'a pas de RLS, n'importe qui peut la lire en entier avec une seule requête. C'est exactement la faille de Lovable (CVE-2025-48757) et la plus courante dans les applis créées avec l'IA.

Comment la corriger

Active la Row Level Security sur toutes les tables et écris des politiques qui ne laissent chaque utilisateur lire que ses propres lignes ; ne laisse la lecture publique que sur ce qui est vraiment public. Dans Firebase, remplace les règles du mode test par des règles qui exigent une session. Ensuite, relance une analyse pour confirmer que le décompte anonyme est à zéro.

Comment fonctionne cette vérification

Les applis créées avec Lovable, Bolt ou v0 parlent souvent à Supabase directement depuis le navigateur : l'URL de ton projet et sa clé publique (anon ou sb_publishable_…) sont donc dans ton JavaScript. C'est normal : cette clé est faite pour être publique. Scanaris les trouve, demande à l'API Supabase quelles tables elle expose et, pour chacune, envoie une requête HEAD avec Prefer: count=exact. La réponse contient le nombre de lignes visibles par un visiteur sans session, et aucune donnée. Si l'API ne publie pas la liste des tables, il teste les noms les plus utilisés par les outils d'IA (profiles, users, orders, messages…). Pour Firebase, il vérifie si la racine de la Realtime Database répond à une lecture sans session.

Ce que signifie un résultat

Une table avec plus de zéro ligne visible anonymement peut être lue par quiconque ouvre ton site : une requête avec la clé publique et il récupère toute la table. C'est exactement le schéma de la vulnérabilité de Lovable (CVE-2025-48757). Avec la Row Level Security activée et des politiques raisonnables, un visiteur anonyme voit zéro ligne : un « 0 » ne donne donc jamais de résultat.

Corriger dans Supabase

Liste les tables sans RLS, active-la et écris une politique par opération. Ne laisse la lecture publique que là où les données sont vraiment publiques (un blog, un catalogue produit).

-- Tables in the public schema without RLS
select c.relname
from pg_class c
join pg_namespace n on n.oid = c.relnamespace
where n.nspname = 'public' and c.relkind = 'r' and not c.relrowsecurity;

alter table public.profiles enable row level security;

create policy "profiles: own rows" on public.profiles
  for select to authenticated
  using ((select auth.uid()) = id);

Corriger dans Firebase

Remplace les règles du mode test par des règles qui refusent tout par défaut et n'ouvrent que ce qui appartient à chaque utilisateur :

{
  "rules": {
    ".read": false,
    ".write": false,
    "users": {
      "$uid": {
        ".read": "auth != null && auth.uid === $uid",
        ".write": "auth != null && auth.uid === $uid"
      }
    }
  }
}

La marche à suivre détaillée est dans le guide Supabase et le guide Firebase.

Questions fréquentes

Scanaris lit-il mes données ?

Non. Il ne lit que le nombre de lignes que l'API renvoie dans un en-tête ; les requêtes ne ramènent aucun contenu et rien n'est conservé.

Puis-je plutôt cacher la clé publique ?

Non, et ce n'est pas nécessaire : le navigateur en a besoin pour parler à Supabase. Ce qui protège tes données, c'est la RLS, pas le fait de cacher la clé.

Vérifie-le sur ton site

Analyse ton site gratuitement et vois si celle-ci et 47 autres vérifications passent, avec un fix prompt pour chaque problème.

Analyser mon site gratuitement

Sur le blog

Sécurité par stack

Vérifications liées