La tua app Lovable è sicura?
Costruire su Lovable è sicuro? Di solito sì. A deciderlo è un'impostazione del database presa il giorno in cui le tue tabelle sono nate.

I loghi sono di proprietà dei rispettivi titolari e sono mostrati solo per indicare la compatibilità.
In breve
- Un'app Lovable è di solito sicura sul lato codice. A decidere se lo sono i tuoi dati è un'impostazione Supabase, tabella per tabella.
- Trovare una chiave API nella tua app di norma non è un problema. Una chiave pubblicabile sta bene lì; sb_secret_… o service_role no.
- Supabase attiva la Row Level Security per le tabelle create nel Table Editor, ma non per quelle create eseguendo SQL, ed è così che un builder le crea.
Lovable ti porta da un'idea a un'app funzionante più in fretta di qualunque altra cosa, e la parte di cui si occupa al posto tuo è proprio quella che non vedi mai: il database, le tabelle, le regole su chi può leggerle. Quando qualcuno ti dice che la tua app Lovable «perde dati», la risposta di solito sta lì, e non è un posto che tu possa guardare da dentro l'editor.
Ecco il punto che guida dopo guida racconta male: il rischio non è quasi mai il codice che Lovable ha scritto per te. È una sola impostazione del database, decisa nel momento in cui una tabella è stata creata, che la maggior parte degli articoli salta o descrive al contrario.
Che cosa costruisce davvero Lovable, e quale metà è pubblica
Due metà, e solo una è privata.
Pensala come un negozio. Lovable ti costruisce una vetrina: le pagine, i pulsanti, i moduli, e quella vetrina viene consegnata per intero a ogni visitatore. Chiunque può leggerla. Non è un difetto; un browser non può mostrare una pagina che non gli è stata data. Dietro la vetrina c'è un magazzino, il tuo database Supabase, che è un edificio separato con la sua serratura.
L'errore che costa caro è dare per scontato che la vetrina comandi il magazzino. Non lo comanda. Togliere un pulsante dalla tua app è staccare un cartello, non chiudere a chiave una porta. Il tuo database è raggiungibile direttamente, via internet, da chiunque ne conosca l'indirizzo, e quell'indirizzo è stampato sulla vetrina, perché è così che la tua stessa app ci parla.
Una chiave nel codice della tua app Lovable è un problema?
Di solito no. Dipende interamente da quale chiave sia, e ce ne sono due tipi che si somigliano quasi in tutto.
Una chiave pubblicabile dice a quale progetto appartiene una richiesta, e
nulla di più. Supabase la chiama sb_publishable_… nei progetti nuovi e anon
in quelli più vecchi, ed è fatta per stare nella tua app dove chiunque può
leggerla. Una chiave segreta è l'opposto: sb_secret_…, oppure
service_role nei progetti più vecchi. Ignora ogni regola tu abbia impostato e
può leggere e scrivere ogni riga di ogni tabella.
Le due stanno una accanto all'altra nel pannello Supabase, hanno la stessa lunghezza e si comportano allo stesso modo mentre costruisci. Copiare quella sbagliata è un solo clic messo male, e dopo non si rompe niente, ed è esattamente per questo che passa inosservato. Se vuoi la versione lunga di come distinguerle, ne abbiamo scritta una.
Che cosa decide se degli estranei possono leggere i tuoi dati
La Row Level Security, un interruttore per tabella in Supabase che decide riga per riga chi può vedere cosa. Spenta, la tua chiave pubblicabile legge l'intera tabella. Accesa e con una policy scritta, legge solo le righe che quella policy permette.
E ora la parte che conta specificamente per un'app Lovable. Supabase attiva la Row Level Security per impostazione predefinita sulle tabelle create nel Table Editor del pannello, quello a clic. Le tabelle create eseguendo SQL non la ricevono attiva e vanno accese deliberatamente.
Eseguire SQL è il modo in cui un builder crea tabelle per te.
Quindi la forma consueta di un progetto Lovable è una manciata di tabelle che hai aggiunto cliccando, che sono protette, accanto alle tabelle generate per te, che potrebbero non esserlo. Nell'editor sembrano identiche. Nessuna delle due si lamenterà. E accendere l'impostazione non è ancora il traguardo, perché una tabella con la Row Level Security attiva e una policy che permette a tutti è aperta in un modo che si legge come chiuso.
Come controllare la tua app Lovable in una decina di minuti
Apri Supabase, poi Authentication → Policies. Scorri l'elenco delle tabelle. Tutto ciò che risulta con la Row Level Security disattivata è leggibile da chiunque abbia l'indirizzo del tuo progetto, che è pubblico.
Controlla la chiave che la tua app spedisce. In Supabase vai su Settings → API. Se la chiave che la tua app usa è quella pubblicabile, è corretto e non c'è nulla da fare. Se una chiave segreta è mai stata incollata nel tuo progetto Lovable, rigenerala lì per prima cosa: cancellarla dal codice non chiude la porta, perché il valore vecchio esiste ancora nelle copie in cache del tuo sito.
Guarda i tuoi bucket di storage. Tutto ciò che è contrassegnato come pubblico può essere elencato e scaricato da chiunque, che la tua app ci rimandi o no.
E poi guarda da fuori. I controlli qui sopra ti dicono che cosa è impostato; non ti dicono che cosa un estraneo raggiunge davvero. È quel vuoto che la nostra scansione gratuita riempie: legge il tuo sito dal vivo come farebbe qualsiasi visitatore e ti dà un voto in una ventina di secondi, senza account: scansiona la tua app.
Cosa fare
- La vetrina è pubblica per costruzione. Tutto ciò che Lovable consegna a un browser è leggibile da chiunque, e nessun nascondiglio lo cambia.
- Una chiave pubblicabile nella tua app è corretta. Una chiave segreta (
sb_secret_…oservice_role) è quella da rigenerare oggi. - Le tabelle create nel Table Editor di Supabase hanno la Row Level Security attiva per impostazione predefinita. Quelle create con SQL no, ed è così che le crea un builder.
- Attivare la Row Level Security è il primo passo. Una policy che permette a tutti lascia la tabella aperta mentre il pannello la dichiara protetta.
- Togliere una schermata o un pulsante dalla tua app Lovable non cambia nulla di ciò che il tuo database risponderà.
La cosa più veloce e utile che puoi fare oggi è aprire Authentication → Policies in Supabase e leggere l'elenco. Se una tabella dice che la Row Level Security è disattivata, comincia da quella, e se preferisci attraversare tutta la superficie come un elenco, la checklist di sicurezza in 10 minuti copre il resto.
Cosa può davvero andare storto con un'app Lovable
Niente di tutto questo significa che hai fatto qualcosa di sbagliato. Sono i normali effetti collaterali del costruire in fretta. Ecco quelli che vale la pena controllare:
Una chiave segreta spedita al browser
Una «chiave segreta» è la password principale di un servizio che usi: il tuo database, uno strumento di e-mail, un'API di IA. Dovrebbe vivere su un server. A volte una finisce nel codice che gira nel browser del tuo visitatore, dove chiunque può leggerla, e qualcuno potrebbe usarla per arrivare ai tuoi dati o generare spese a tuo nome. La sfumatura: alcune chiavi devono essere pubbliche (Lovable e Supabase le chiamano chiavi «publishable» o «anon»), e quelle vanno bene. Reeve conosce la differenza, così una chiave sicura non fa mai scattare un falso allarme.
Il tuo database lasciato aperto (RLS di Supabase disattivato)
Le app Lovable di solito conservano i dati in Supabase. Supabase ha un interruttore di sicurezza chiamato Row Level Security (RLS) che decide chi può leggere o modificare ogni riga. Se è disattivato, le tue tabelle possono essere leggibili, o modificabili, da chiunque trovi l'indirizzo. È la differenza tra «i miei dati sono miei» e «la mia lista clienti è pubblica», ed è il problema più comune nelle app vibe-coded.
Un file .env o di configurazione esposto
Il file .env è dove un progetto tiene le sue password e chiavi. Ogni tanto viene pubblicato per errore insieme all'app. Se è raggiungibile, è una scorciatoia diretta a tutto ciò che è sensibile. Reeve controlla se il tuo è accessibile senza che tu lo sappia.
Archiviazione di file pubblica
Se la tua app permette alle persone di caricare file (foto, PDF), questi vivono in «bucket» di archiviazione. Un bucket lasciato pubblico significa che chiunque può sfogliare o scaricare ciò che c'è dentro, così un caricamento pensato per una persona può finire visibile a tutti. Reeve controlla se i tuoi bucket sono elencabili; non scarica mai i file di nessuno.
Source map lasciate attive
Una «source map» è un file dietro le quinte che rivela il codice originale della tua app. Comoda mentre costruisci, ma se finisce in produzione consegna agli estranei una copia leggibile di come funziona la tua app, il che rende ogni porta qui sopra più facile da trovare. Da sola non è urgente, ma vale la pena sistemarla.
Header di sicurezza mancanti ed endpoint aperti
Piccole impostazioni che dicono ai browser come proteggere i tuoi visitatori, più il fatto che gli endpoint di dati della tua app rispondano a chiunque o a qualsiasi sito. Singolarmente minori; insieme allargano la falla. Reeve segnala quelli che mancano.
Cos'è Reeve, e cosa non è
Reeve è un controllo gratuito, in sola lettura, dall'esterno, come un ispettore che gira attorno all'edificio e prova le porte. È 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.
Lovable è uno strumento capace, e il suo team aggiunge di continuo protezioni di sicurezza; anche Supabase ha un consulente integrato che segnala i problemi di RLS nella sua dashboard. Entrambi sono davvero utili. Cosa aggiunge Reeve: tu vivi in Lovable, non nella console di Supabase, e quegli strumenti parlano da sviluppatori. Reeve guarda tutta la tua app dall'esterno, come farebbe un estraneo, e ti dice ciò che trova con parole su cui puoi agire. E se preferisci non pensarci affatto, possiamo tenerla d'occhio noi per te.
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 CareFAQ
La mia app Lovable è sicura per impostazione predefinita?
Lovable ti dà un solido punto di partenza e migliora di continuo le sue impostazioni predefinite, ma «sicura per impostazione predefinita» dipende comunque da come è configurata la tua app, soprattutto dalle regole del tuo database Supabase. L'unico modo di saperlo è controllare cosa è davvero esposto, ed è ciò che fa la scansione gratuita di Reeve in circa 20 secondi.
Un'app Lovable può far trapelare le mie chiavi di API?
Può succedere, di solito quando una chiave che appartiene a un server finisce nel codice del front-end. Ma non ogni chiave è un problema: alcune sono progettate per essere pubbliche. Reeve legge il codice caricato della tua app, trova tutte le chiavi e ti dice quali sono sicure e quali vanno spostate.
Cos'è l'RLS di Supabase e perché conta per la mia app Lovable?
L'RLS (Row Level Security) è la regola di Supabase su chi può vedere o modificare ogni riga dei tuoi dati. Se è disattivato, le tue tabelle possono essere aperte a chiunque. Dato che la maggior parte delle app Lovable usa Supabase, è la cosa più importante da azzeccare, e Reeve la controlla senza mai leggere i tuoi dati reali.
Scansionare la mia app Lovable romperà qualcosa o cambierà i miei dati?
No. Reeve guarda solo ciò che è già pubblico dall'esterno. Non accede mai, non cambia mai nulla e non scarica mai i tuoi file. In sola lettura, come controllare se una porta è chiusa a chiave senza entrare.
Lovable ha costruito il database al posto mio. Vuol dire che è configurato in sicurezza?
Non automaticamente, e il motivo è preciso. Supabase attiva la Row Level Security per impostazione predefinita sulle tabelle che crei cliccando nel Table Editor. Le tabelle create eseguendo SQL non la ricevono, ed eseguire SQL è il modo in cui un builder crea tabelle per te. Quindi le tabelle che hai fatto a mano sono di solito protette e quelle fatte da Lovable potrebbero non esserlo.
Quali delle mie tabelle hanno la Row Level Security attiva?
Apri il tuo progetto Supabase, vai su Authentication e poi Policies. Lì è elencata ogni tabella del tuo schema public con lo stato della RLS. Tutto ciò che risulta disattivato è leggibile da chiunque abbia l'indirizzo del tuo progetto e la tua chiave pubblicabile, e le due cose stanno entrambe dentro la tua app.
Ho trovato una chiave nella mia app Lovable. Come capisco se conta?
Leggi di che tipo è. Una chiave pubblicabile (chiamata sb_publishable_ nei progetti Supabase nuovi, o anon in quelli più vecchi) sta bene nel browser e non è una fuga. Una chiave segreta, sb_secret_ o la più vecchia service_role, ignora ogni regola tu imposti e non dovrebbe mai arrivare a un browser. Se trovi quella, rigenerala nel pannello Supabase prima di qualunque altra cosa.