Supabase ti dà un database e un'API in pochi minuti, ed è proprio lì il pericolo: l'API è esposta dal primo momento. Se non configuri la sicurezza, chiunque abbia la tua chiave pubblica può leggere e scrivere le tue tabelle. Ecco cosa rivedere.
RLS attivo su OGNI tabella
Row Level Security è la barriera principale di Supabase. Senza, la chiave anon può interrogare tabelle intere direttamente dal browser. L'errore classico del vibe coder è creare una nuova tabella in fretta e dimenticare di attivare l'RLS.
Controlla tabella per tabella nel pannello: se qualcuna compare senza RLS, è aperta al pubblico. Attivarlo non basta neanche: una tabella con RLS attivo ma senza policy nega tutto, e una con una policy troppo permissiva non protegge nulla.
service_role contro anon
La chiave anon è pubblica e va nel frontend: è pensata per essere governata dall'RLS. La chiave service_role salta l'RLS del tutto e ha accesso completo. Non deve mai comparire nel browser né in una variabile NEXT_PUBLIC_.
Usala solo sul server, in edge function o backend fidati. Se sospetti che sia trapelata, ruotala subito dal pannello.
Policy che riflettono davvero chi può fare cosa
Una policy di true per tutti lascia la tabella aperta anche con l'RLS attivo. Scrivi policy specifiche: che un utente legga e modifichi solo le proprie righe, di solito confrontando auth.uid() con la colonna del proprietario. Separa le regole per operazione (select, insert, update, delete): a volte vuoi permettere la lettura ma non l'eliminazione.
Storage: anche i bucket hanno regole
L'archiviazione dei file usa le proprie policy. Un bucket pubblico serve qualsiasi file via URL a chiunque ce l'abbia. Decidi consapevolmente quali bucket sono pubblici e proteggi il resto con policy basate sull'utente. Carica i documenti privati in bucket privati, non in uno pubblico con nomi difficili da indovinare.
Segreti e chiavi fuori dal frontend
Oltre alla service_role, controlla che non ci siano chiavi di terze parti (Stripe, email, IA) incorporate nel JavaScript del client. L'IA a volte le mette lì per far funzionare qualcosa in fretta, e restano visibili per sempre.
Scanaris rivede il tuo Supabase per te
Scanaris include un audit opzionale di Supabase che verifica se le tue tabelle hanno l'RLS e rileva chiavi esposte nel frontend. È un controllo di sola lettura su ciò che è già pubblico, e ogni risultato arriva con un prompt pronto da incollare nella tua IA. Passalo prima del lancio e saprai se hai lasciato una porta aperta.