La tua app Supabase è sicura?
Supabase è il database e il backend dietro un'enorme fetta delle app vibe-coded. È potente e sicuro quando è configurato bene — ma un paio di impostazioni decidono se i tuoi dati sono privati o aperti al mondo, e sono facili da mancare.
Reeve controlla quelle che contano dall'esterno, gratis, e spiega ciò che trova in linguaggio semplice. Nessuna installazione, nessun accesso al tuo progetto — guardiamo solo ciò che è già raggiungibile, e non leggiamo mai i tuoi dati reali.
Incolla il link della tua app. Circa 20 secondi. Guarda il tuo voto senza registrarti.
Cosa può davvero andare storto con Supabase
Niente di tutto questo significa che hai fatto qualcosa di sbagliato — sono le solite falle quando vai di fretta. Ecco cosa vale la pena controllare:
Row Level Security (RLS) disattivata
L'RLS è la regola di Supabase su chi può leggere o modificare ogni riga di una tabella. Con la chiave pubblica «anon» — che deve stare nella tua app — chiunque può interrogare il tuo database direttamente. L'RLS è ciò che gli impedisce di vedere righe che non sono sue. Se è disattivata, una tabella può essere del tutto leggibile, o persino modificabile, da chiunque. È l'impostazione più importante di Supabase, e Reeve la controlla contando le righe, mai leggendole.
Una chiave service_role trapelata
Supabase ti dà due chiavi. La chiave «anon» è pubblica per progettazione e sicura nel browser. La chiave «service_role» aggira tutte le tue regole di sicurezza e deve vivere solo su un server. Se mai finisce nel codice del front-end della tua app, qualcuno può fare qualsiasi cosa con i tuoi dati. Reeve decodifica le chiavi che trova e ti dice esattamente quale è esposta — la «anon» sicura riceve un segno di spunta verde, la «service_role» è un allarme rosso.
Bucket di archiviazione pubblici
I file che le persone caricano vivono in «bucket» di Supabase Storage. Un bucket impostato come pubblico significa che chiunque può elencare e scaricare ciò che c'è dentro — così i caricamenti privati possono diventare visibili a tutti. Reeve controlla se i tuoi bucket sono elencabili; non scarica mai i file di nessuno.
La tua API aperta a qualsiasi sito (CORS)
Supabase dà al tuo database un indirizzo web (tramite PostgREST). Combinato con un'impostazione di condivisione troppo permissiva, un altro sito potrebbe chiamare i tuoi dati dal browser di un visitatore. Reeve controlla se i tuoi endpoint rispondono agli estranei e ad altri siti — senza mai usarli per cambiare nulla.
Tabelle ed endpoint esposti senza regole
Ogni tabella che crei è raggiungibile tramite l'API di Supabase — è così per progettazione, e l'RLS dovrebbe proteggerla. Ma una nuova tabella aggiunta in fretta, prima che le sue regole siano impostate, può restare brevemente (o a lungo) aperta. Reeve controlla cosa è davvero raggiungibile dall'esterno.
Chiavi o configurazione lasciate nell'app pubblicata
Oltre alle chiavi di Supabase stesso, le app spesso portano altre impostazioni e segreti nel loro codice front-end o in un .env esposto. Reeve legge il codice caricato della tua app e controlla se ci sono file di configurazione raggiungibili, poi ti dice quali valori sono sicuri da rendere pubblici e quali no.
Cos'è Reeve — e cosa non è
Reeve è un controllo gratuito, in sola lettura, dall'esterno — come un ispettore che prova le porte senza entrare. È veloce e coglie gli errori comuni ad alto impatto. Non è un audit di sicurezza completo, e un voto pulito non è una garanzia — significa che le porte ovvie sono chiuse. Tutto ciò che Reeve fa è passivo: conta le righe invece di leggerle, e non scarica mai i tuoi file.
Supabase ti dà veri strumenti di sicurezza — un Security Advisor e un linter del database che segnalano i problemi di RLS e di esposizione proprio nella dashboard — e vale davvero la pena usarli. Cosa aggiunge Reeve: la maggior parte di chi costruisce su Supabase vive nel proprio creatore di app, non nell'editor SQL, e l'advisor parla da sviluppatori. Reeve controlla tutta la tua app dall'esterno — come un aggressore arriverebbe ai tuoi dati — e spiega ciò che trova con parole semplici. E se preferisci non tenerla d'occhio tu stesso, possiamo farlo noi.
Vuoi che sia gestito, non solo controllato?
Reeve Care continua a tenere d'occhio la tua app, fa il backup dei tuoi dati e ti aiuta a sistemare le cose quando si rompono — così puoi continuare a creare invece di preoccuparti.
Scopri Reeve CareDomande, con risposte oneste
Cos'è l'RLS di Supabase e ne ho davvero bisogno?
L'RLS (Row Level Security) decide chi può vedere o modificare ogni riga delle tue tabelle. Dato che la tua app invia una chiave pubblica «anon» capace di interrogare il database direttamente, l'RLS è ciò che impedisce che i dati di un utente siano visibili a tutti. Sì — per qualsiasi tabella con dati reali, ti serve attivo. Reeve controlla se lo è, senza leggere i tuoi dati.
La chiave anon di Supabase è sicura da esporre?
Sì — la chiave «anon» è progettata per vivere nel tuo front-end, e da sola fa solo ciò che le tue regole RLS permettono. La chiave che non deve mai essere esposta è la «service_role», che ignora tutte le regole. Reeve decodifica le chiavi della tua app e ti dice quale è quale.
Cosa succede se la mia chiave service_role trapela?
La chiave service_role aggira ogni regola di sicurezza, quindi chiunque la abbia può leggere, cambiare o cancellare tutti i tuoi dati. Se è nel tuo codice front-end, trattala come compromessa: ruotala nella dashboard di Supabase e spostala su un server. Reeve segnala una chiave service_role esposta come un problema critico.
Reeve può controllare il mio Supabase senza la password del mio database?
Sì. Reeve usa solo ciò che la tua app già espone pubblicamente — la stessa chiave anon e gli stessi endpoint che usa il browser di qualsiasi visitatore. Non ha mai bisogno della password del tuo database, non accede mai come amministratore e non legge né scarica mai le tue righe o i tuoi file.
Hai creato la tua app in uno strumento specifico? Ecco lo stesso resoconto onesto per:
Controllo esterno automatizzato, non un audit completo. L'assenza di risultati non è una garanzia di sicurezza.