← Tutti i controlli
SicurezzaGravità tipica: Critico

Rilevatore di database aperto

Verifica se le tabelle Supabase o il database Firebase del tuo sito si possono leggere senza effettuare l'accesso.

Controllo gratuito in tempo reale

Troviamo il tuo progetto Supabase o Firebase nel codice pubblico del tuo sito e verifichiamo, con la stessa chiave pubblica che ricevono i tuoi visitatori, se le sue tabelle si possono leggere senza accesso. Contiamo solo le righe; non scarichiamo mai dati.

Verificalo gratis nella tua dashboard

Account gratuito, pronto in 30 secondi. Contiamo solo le righe; non scarichiamo mai dati.

Cosa controlla

Questo scanner cerca nel JavaScript pubblico del tuo sito l'indirizzo del progetto Supabase o della Realtime Database di Firebase e la chiave pubblica usata dal browser. Con quella stessa chiave, come farebbe qualsiasi visitatore, verifica quali tabelle rispondono senza accesso. Conta solo le righe: non scarica né salva mai dati.

Perché è importante

In Supabase la chiave pubblica è pensata per stare nel browser: a proteggere i dati sono le policy di Row Level Security. Se una tabella non ha RLS, chiunque può leggerla per intero con una sola richiesta. È esattamente la falla della vulnerabilità di Lovable (CVE-2025-48757) e la più comune nelle app create con l'IA.

Come risolverlo

Attiva la Row Level Security su tutte le tabelle e scrivi policy che permettano a ogni utente di leggere solo le proprie righe; lascia la lettura pubblica solo su ciò che è davvero pubblico. In Firebase, sostituisci le regole della modalità di test con regole che richiedono una sessione. Poi scansiona di nuovo per confermare che il conteggio anonimo è zero.

Come funziona questo controllo

Le app create con Lovable, Bolt o v0 di solito parlano con Supabase direttamente dal browser, quindi l'URL del tuo progetto e la sua chiave pubblica (anon o sb_publishable_…) sono nel tuo JavaScript. È normale: quella chiave è pensata per essere pubblica. Scanaris le trova, chiede all'API di Supabase quali tabelle espone e, per ognuna, invia una richiesta HEAD con Prefer: count=exact. La risposta contiene il numero di righe che vede un visitatore senza sessione, e nessun dato. Se l'API non pubblica l'elenco delle tabelle, prova i nomi più usati dagli strumenti di IA (profiles, users, orders, messages…). Per Firebase, verifica se la radice della Realtime Database risponde a una lettura senza sessione.

Cosa significa un risultato

Una tabella con più di zero righe visibili in modo anonimo può essere letta da chiunque apra il tuo sito: una richiesta con la chiave pubblica e ottiene l'intera tabella. È esattamente lo schema della vulnerabilità di Lovable (CVE-2025-48757). Con la Row Level Security attiva e policy ragionevoli, un visitatore anonimo vede zero righe: per questo uno "0" non genera mai un risultato.

Come correggerlo in Supabase

Elenca le tabelle senza RLS, attivala e scrivi una policy per operazione. Lascia la lettura pubblica solo dove i dati sono davvero pubblici (un blog, un catalogo prodotti).

-- 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);

Come correggerlo in Firebase

Sostituisci le regole della modalità di test con regole che negano tutto per impostazione predefinita e aprono solo ciò che appartiene a ciascun utente:

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

La procedura passo passo è nella guida a Supabase e nella guida a Firebase.

Domande frequenti

Scanaris legge i miei dati?

No. Legge solo il conteggio delle righe che l'API restituisce in un'intestazione; le richieste non portano il contenuto delle tabelle e non viene salvato nulla.

Posso invece nascondere la chiave pubblica?

No, e non serve: il browser ne ha bisogno per parlare con Supabase. A proteggere i tuoi dati è la RLS, non nascondere la chiave.

Verificalo sul tuo sito

Scansiona il tuo sito gratis e scopri se questo e altri 47 controlli passano, con un prompt di fix per ogni problema.

Scansiona il mio sito gratis

Dal blog

Sicurezza per stack

Controlli correlati