Vai al contenuto

Basi della sicurezza

Sicurezza di v0: tutte le 1.790 app v0 analizzate hanno preso A

La sicurezza di v0 misurata su 1.790 app v0 online: tutte hanno preso A. Solo 17 nominavano un database, ed è soprattutto questo che misura quella A.

Vlad Tkachenko12 min di lettura
Uno schedario con il logo v0 e un cassetto vuoto aperto, accanto a uno schedario con tutti i cassetti chiusi a chiave.

In breve

  • Sulla sicurezza, v0 è uscito più pulito di qualsiasi altro builder che abbiamo misurato: tutte le 1.790 app v0 online che abbiamo analizzato hanno preso A, e l’unico rilievo che avevano in comune è un’impostazione delle intestazioni sul dominio da cui v0 le serve.
  • Questo dice soprattutto che cosa sono quelle app. Solo 17 delle 1.790 nominavano un database, e nessuna di quelle 17 ha dato al nostro controllo sul database una risposta che potesse giudicare.
  • Collega Supabase, o pubblica su un dominio tuo, e i controlli tornati vuoti cominciano ad avere qualcosa da controllare.

Hai descritto un’app a v0, l’hai guardato costruirla e ti ha restituito un link che finisce in vusercontent.net. Funziona, sembra finita, e forse l’hai già mandata a qualcuno. Prima che clienti veri ci scrivano i loro dati, hai cercato la sicurezza di v0, e parte di quello che è uscito era una storia di attaccanti che usavano v0 per costruire false pagine di accesso.

Quella storia parla di quello che altri fanno con lo strumento. Questo articolo parla dell’app che hai fatto tu, e per quella abbiamo una misura. Tra il 12 e il 14 agosto 2026 abbiamo eseguito gli stessi nove controlli esterni che chiunque può lanciare gratis dalla nostra homepage su 30.998 app online, e 1.790 erano app v0. Tutte le 1.790 hanno preso A.

Ecco la parte che una classifica legge male: quella A dice più su che cosa c’era da controllare che su v0. Letta come classifica, fa di v0 il builder più sicuro che abbiamo misurato. Letta con i suoi denominatori, descrive frontend senza niente dietro, e smette di descrivere il tuo il giorno in cui colleghi un database.

v0 è sicuro?

Su tutto quello che abbiamo potuto misurare di v0 in sé, sì. Il suo unico rilievo appartiene al dominio da cui v0 serve la tua app, e nient’altro è comparso su nessuna delle 1.790, in nessuno dei nove controlli. Quello che questo non può dirti è come si comporta la tua app quando contiene dati, perché quasi nessuna di queste ne conteneva.

Pensa a un’anteprima v0 come a uno schedario in uno showroom. I cassetti scorrono, le etichette ci sono, chiunque passi può aprirne uno, e ogni cassetto è vuoto. I nostri controlli hanno provato ogni cassetto e non hanno trovato niente in nessuno, ed è un resoconto esatto di uno schedario vuoto.

Quanto è vuoto lo dicono i numeri. Solo 17 delle 1.790 nominavano un progetto Supabase da qualche parte nel codice che pubblicano, e su tutte e 17 il nostro controllo sul database non ha ottenuto una risposta che potesse giudicare, quindi il conto delle tabelle leggibili su v0 è zero su zero. Tutte le 1.790 erano servite da vusercontent.net, che Vercel descrive nella sua richiesta alla Public Suffix List come il posto "dove ospitiamo i contenuti inviati dagli utenti" di v0. Un’app che pubblichi va su un indirizzo vercel.app o su un dominio tuo, dove niente la segnala come v0 da fuori, quindi quelle non sono nel conto. Il metodo e i dati completi sono nel rapporto.

Quindi "v0 è sicuro?" sono tre domande:

  1. Lo strumento. Che cosa v0 controlla nel codice che scrive, e che cosa si rifiuta di pubblicare. Questa parte è di Vercel, ed è documentata.
  2. L’anteprima. Lo schedario nello showroom, al suo indirizzo vusercontent.net. Tutte le app che abbiamo misurato erano a questo stadio.
  3. L’app che riempi. Lo stesso codice quando contiene i dati dei tuoi clienti, o gira su un dominio tuo. Quasi niente di quello che abbiamo misurato era arrivato fin qui.

Che cosa copre la sicurezza di v0 prima che tu pubblichi

Tre cose, e la documentazione di v0 le nomina tutte e tre.

Rilegge il codice che ha scritto. La pagina sulla sicurezza di v0 dice che tutto il codice generato "passa per un’analisi di sicurezza prima dell’esecuzione", e che v0 "analizza l’uso di NEXT_PUBLIC_ e avvisa gli utenti dei possibili rischi di sicurezza". NEXT_PUBLIC_ è il prefisso che dice a Next.js, il framework in cui scrive v0, di mettere un valore nel codice che ogni visitatore scarica. Che cosa fa quel prefisso a una chiave è un articolo a parte.

Rifiuta alcuni deploy. Ad agosto 2025 Vercel ha scritto che v0 aveva bloccato più di 17.000 deploy nei 30 giorni precedenti solo per segreti esposti, e più di 100.000 deploy non sicuri dal lancio. Sono cifre di Vercel sul blocco di Vercel, che vale per i deploy su Vercel. Una parte del nostro zero può essere opera di quel blocco. Da fuori non possiamo dire quanta.

L’integrazione con Supabase mette il prefisso al posto giusto. Collegata tramite il Vercel Marketplace, aggiunge una dozzina di variabili d’ambiente, e solo due portano NEXT_PUBLIC_: l’indirizzo del progetto e la chiave pubblicabile, entrambe fatte per essere pubbliche. SUPABASE_SECRET_KEY e la password del database restano senza, sul server.

L’integrazione con Supabase aggiunge dodici variabili. Due arrivano a ogni visitatore, ed entrambe devono farlo: l’indirizzo del progetto e la chiave pubblicabile.

Perché a un’anteprima v0 mancano le intestazioni di sicurezza

Perché le imposta il dominio delle anteprime di v0, ogni app che ci sta sopra riceve la stessa risposta, e da dentro un’anteprima non puoi cambiarla.

Le intestazioni di sicurezza sono istruzioni che un sito manda con ogni pagina: usa sempre HTTPS, non lasciare che un altro sito mostri questa pagina dentro la sua, non indovinare che tipo di file è. Le manda chi serve la pagina. Le anteprime che abbiamo aperto il 3 ottobre 2026 mandavano una delle cinque che cerca il nostro controllo, quella che impone HTTPS, e nessuna delle altre quattro. È il rilievo su tutte le 1.790 app v0, ed è l’unico.

Lo showroom decide le proprie porte e i propri allarmi, e non puoi ricablarli per un solo schedario sul suo pavimento. Appena pubblichi, lo schedario è nel tuo ufficio, e le intestazioni sono un’impostazione in vercel.json o nella tua configurazione di Next.js. Che cosa fa ogni intestazione, e le due che non costano niente è un altro articolo.

Un’anteprima vusercontent.net è pubblica?

Trattala come pubblica. Chiunque abbia l’indirizzo può aprirla, e gli indirizzi girano.

Ognuna delle 1.790 si è aperta per noi senza login, e non abbiamo dovuto indovinarne nessuna: i loro indirizzi venivano da un archivio web pubblico che aveva già salvato una copia di ognuna. Le impostazioni di condivisione di v0 decidono chi può vedere la tua chat: privata per impostazione predefinita, poi il tuo team, chiunque abbia il link, o chiunque sul web. La documentazione non dice che queste impostazioni arrivino all’anteprima.

Un’anteprima, quindi, è lo schedario nello showroom. Va bene per mostrare il design a qualcuno e non per i documenti veri di nessuno. Vercel ha inserito vusercontent.net nella Public Suffix List a settembre 2024, il che fa trattare ai browser ogni anteprima come un sito separato, così un’anteprima non può impostare cookie per tutte le altre. Questo tiene le anteprime separate tra loro, e non fa niente per tenere privata la tua.

Se sei qui perché qualcuno ti ha mandato un link vusercontent.net: il dominio è di Vercel, e la pagina che ci sta sopra l’ha fatta chi l’ha chiesta con un prompt. Il 1° luglio 2025 Okta ha segnalato attaccanti che usavano v0 per costruire copie di vere pagine di accesso, e Vercel ha limitato l’accesso a quelle che ha trovato. Non scrivere una password in un modulo di accesso a un indirizzo del genere se non te lo aspettavi.

Che cosa cambia quando colleghi Supabase a v0

Cominci a riempire i cassetti, e i controlli tornati vuoti su v0 cominciano ad avere qualcosa da controllare.

v0 aggiunge Supabase con un clic e, con le parole della sua stessa documentazione, "può generare ed eseguire SQL. Questo ti permette di creare, aggiornare ed eliminare tabelle". È così che nascono le tue tabelle. Ogni tabella è un cassetto, e la Row Level Security è la sua serratura: un’impostazione per tabella che decide quali righe può leggere la chiave pubblicabile nella tua pagina. Quella chiave è fatta per essere pubblica, quindi la serratura è l’unica cosa che decide che cosa riceve uno sconosciuto.

Supabase mette quella serratura per impostazione predefinita sulle tabelle create nel suo Table Editor, e la lascia fuori sulle tabelle create eseguendo SQL, che è il modo in cui le crea v0.

Una tabella creata nel Table Editor di Supabase arriva chiusa a chiave. Una tabella creata eseguendo SQL, che è il modo in cui le crea v0, arriva con il lucchetto aperto.

È lì che sono caduti i rilievi gravi su tutti gli altri builder. Delle 3.553 app Lovable di cui abbiamo potuto interrogare il database, 2.017 hanno consegnato righe a una richiesta senza login, e i numeri di Lovable sono l’aspetto che hanno i risultati di un builder quando nei cassetti ci sono documenti. Una serratura che si apre con qualsiasi chiave non è una serratura nemmeno lei: una policy che dice using (true) fa passare tutti mentre la dashboard mostra la tabella come protetta. La RLS è attiva e la tua tabella è ancora pubblica racconta tutta la storia.

Se invece i tuoi dati stanno dietro route a cui risponde il tuo codice server, la stessa domanda va fatta a quelle route: che cosa significa un endpoint API aperto.

Che cosa cambia quando pubblichi o fai il deploy da solo

Lo schedario lascia lo showroom per il tuo ufficio, e le decisioni che prendeva il dominio di v0 diventano tue.

Pubblicare da v0 crea un progetto Vercel e chiede tre cose, secondo la documentazione sui deploy di v0: il nome del progetto, chi può accedere all’app pubblicata, e il dominio, un indirizzo vercel.app oppure uno tuo. Fermati sulla seconda. Le opzioni che vedi dipendono dal tuo piano, e tenere l’app per il tuo team o dietro una password finché non l’hai controllata lascia fuori gli sconosciuti mentre guardi.

Tre cose passano a te quando pubblichi:

  • Le intestazioni. Le porte e gli allarmi dell’ufficio adesso li imposti tu.
  • Le variabili d’ambiente. Stanno nelle impostazioni del tuo progetto, ed è in quella lista che una chiave riceve il prefisso NEXT_PUBLIC_ oppure no.
  • Il controllo sul tuo deploy, se lasci Vercel. Vercel descrive il suo blocco come qualcosa che ferma i deploy su Vercel, quindi il codice che scarichi e ospiti altrove esce senza quel controllo.

In entrambi i casi hai lasciato il campione che abbiamo misurato. Un’app v0 sul suo dominio con un database dietro ha più in comune con le app Bolt che abbiamo misurato che con queste 1.790 anteprime.

Come controllare la tua app v0

Cinque cose, e le prime tre contano solo dopo che hai collegato un database o pubblicato. Usa una finestra privata, così il tuo login non risponde al posto di uno sconosciuto.

  1. Leggi le tue variabili d’ambiente. In v0 sono nel menu del progetto, sotto Settings, Environment Variables. Tutto quello che comincia con NEXT_PUBLIC_ sta nel codice che ogni visitatore scarica. L’indirizzo di un progetto e una chiave pubblicabile ci stanno bene. Una chiave che ti costa soldi, SUPABASE_SECRET_KEY e qualunque cosa contenga una password, mai. Se una di queste ha mai avuto il prefisso, ruotala prima presso il fornitore, perché il vecchio valore continua a funzionare finché non lo fai.
  2. Leggi la serratura di ogni tabella. In Supabase apri Authentication → Policies e scorri la lista. Una tabella con la Row Level Security disattivata è leggibile da chiunque abbia l’indirizzo del tuo progetto, e quell’indirizzo è nella tua pagina. Una policy che permette tutto a tutti conta come disattivata.
  3. Scegli chi può vederla quando pubblichi. Solo il tuo team, o una password, finché le prime due non sono fatte.
  4. Imposta le intestazioni quando il dominio è tuo. Due di queste sono una riga ciascuna.
  5. Poi guarda da fuori. La nostra scansione esegue i nove controlli sull’indirizzo pubblicato come farebbe uno sconosciuto, impiega circa 20 secondi e non chiede un account: scansiona la tua app gratis.

Una scansione da fuori non vede il codice che ha scritto v0, né la chat in cui l’hai scritto, né una tabella che le tue pagine non nominano mai. I controlli di v0 vedono il codice da dentro e non vedono che cosa riceve uno sconosciuto dall’indirizzo. Usa quelli di v0 mentre costruisci, guarda da fuori dopo aver pubblicato e, se i due non sono d’accordo su una tabella leggibile, fidati della risposta da fuori, perché è quella che riceve uno sconosciuto. La versione in parole semplici per questa piattaforma è la tua app v0 è sicura?.

Perché resti così dopo la pubblicazione

Una A su un’anteprima descrive un’anteprima. Il giorno in cui colleghi un database o pubblichi sul tuo dominio, il tuo voto può cambiare, e niente sul tuo schermo ti dice che è cambiato.

Reeve Monitor rifà i nove controlli per te:

  • tutti e nove i controlli ogni ora, su un massimo di tre app
  • se l’app è raggiungibile, ogni 60 secondi
  • un messaggio quando un risultato cambia, così una tabella o una chiave nuova non aspetta che tu guardi
  • un rapporto mensile di quello che ha visto

Monitor costa €12 al mese a listino, con sette giorni gratis prima di addebitarti qualcosa. La pagina dei prezzi a volte è sotto la cifra indicata qui e mai sopra.

Se la tua app v0 tiene i dati su Supabase, Reeve Care conserva una copia del tuo database Supabase.

  • una copia cifrata ogni notte, tenuta dove il tuo progetto non può arrivare
  • ogni copia verificata prima di contare, con il conteggio delle righe di ogni tabella
  • un ripristino con un clic quando ti serve
  • anche i tuoi file caricati, appena colleghi una credenziale di Storage
  • tutto ciò che fa Monitor

Care costa €49 al mese a listino per un’app, con gli stessi sette giorni gratis.

La documentazione di v0 dice che può eliminare tabelle oltre a crearle, e nessuno dei nove controlli qui sopra riporterebbe indietro le sue righe. Il giorno in cui un agente IA ha cancellato un database di produzione mostra com’è vista da dentro.

Cosa fare questa settimana

Cosa fare

  • Se la tua app v0 è ancora un’anteprima, tratta il suo indirizzo come pubblico e tienine fuori i dati di persone reali.
  • Prima di collegare un database, decidi dove sta ogni chiave: NEXT_PUBLIC_ per l’indirizzo del progetto e la chiave pubblicabile, e niente vicino al browser per tutto il resto.
  • Dopo aver collegato Supabase, leggi la policy di ogni tabella creata da v0, e tratta come disattivata una che permette tutto a tutti.
  • Pubblica solo per il tuo team o dietro una password finché non è fatto, poi controlla l’indirizzo pubblicato da fuori.
  • Tieni una copia del tuo database dove né v0 né il tuo progetto possono arrivare, e controlla che la copia si ripristini.

Comincia dalle variabili d’ambiente, perché decidono che cosa scarica ogni visitatore. Se stai ancora scegliendo un builder, qual è il builder di app IA più sicuro mette i cinque uno accanto all’altro.

FAQ

v0 è sicuro?

Su quello che abbiamo potuto misurare, v0 è uscito più pulito di qualsiasi altro builder analizzato. Tutte le 1.790 app v0 online hanno preso A, e l’unico rilievo che avevano in comune era un’impostazione delle intestazioni del browser sul dominio da cui v0 serve le anteprime. Solo 17 però nominavano un database, e nessuna di quelle 17 ha dato una risposta al nostro controllo sul database, quindi la A descrive soprattutto frontend senza niente dietro. Appena colleghi Supabase o pubblichi sul tuo dominio, i controlli che decidono un voto grave cominciano a valere anche per te.

Le app v0 sono sicure per impostazione predefinita?

Le parti che v0 controlla sono in buono stato. La sua documentazione dice che il codice generato passa per un’analisi di sicurezza prima di essere eseguito e che avvisa dell’uso rischioso del prefisso NEXT_PUBLIC_, e ad agosto 2025 Vercel ha detto che v0 aveva bloccato più di 17.000 deploy in 30 giorni per segreti esposti. Quello che nessuna impostazione predefinita decide è la serratura delle tue tabelle. Supabase non attiva la Row Level Security sulle tabelle create eseguendo SQL, che è il modo in cui le crea v0, quindi leggi la policy di ogni tabella dopo aver collegato un database.

Un URL di anteprima vusercontent.net è pubblico?

Trattalo come pubblico. Ognuna delle 1.790 anteprime v0 che abbiamo analizzato si è aperta senza login, e i loro indirizzi li abbiamo trovati in un archivio web pubblico. Le impostazioni di condivisione di v0 controllano chi può vedere la tua chat, e la sua documentazione non dice che valgano per l’anteprima. Tieni i dati di persone reali fuori da un’anteprima e, quando pubblichi, scegli una visibilità solo per il team o con password finché l’app non è pronta per gli sconosciuti.

vusercontent.net è sicuro?

Il dominio è reale e appartiene a Vercel, che lo usa per ospitare quello che le persone generano con v0. La pagina a un dato indirizzo però l’ha fatta chi l’ha chiesta con un prompt, e a luglio 2025 Okta ha segnalato attaccanti che usavano v0 per costruire copie di pagine di accesso. Vercel ha limitato l’accesso a quelle che ha trovato. Se un link che non aspettavi apre un modulo di accesso a un indirizzo vusercontent.net, non scriverci una password.

Che cosa cambia quando collego Supabase a v0?

Adesso ci sono dati dietro il tuo frontend, quindi i controlli tornati vuoti sulle app v0 cominciano ad avere qualcosa da controllare. v0 può eseguire SQL per creare tabelle, e Supabase non attiva la Row Level Security sulle tabelle create così. La tua chiave pubblicabile è fatta per stare nella pagina, quindi la policy di ogni tabella è l’unica cosa che decide che cosa può leggere uno sconosciuto. Delle 3.553 app Lovable di cui abbiamo potuto interrogare il database, 2.017 hanno consegnato righe a una richiesta senza login.

Che cosa cambia quando faccio io il deploy del codice di v0?

Tre cose diventano tue. Le intestazioni di sicurezza che sceglieva il dominio delle anteprime di v0 diventano un’impostazione in vercel.json o nella tua configurazione di Next.js. Le tue variabili d’ambiente, e quali portano il prefisso NEXT_PUBLIC_, stanno nel tuo progetto. E il codice che scarichi e ospiti fuori da Vercel non passa più per il controllo sui deploy che Vercel descrive per v0. Guarda l’indirizzo pubblicato da fuori appena è online.

Scritto da

Vlad Tkachenko

Fondatore di Reeve

Passo le giornate a guardare app costruite con Lovable, Bolt, v0, Cursor e Replit, e la breve lista di errori che vi ricompaiono di continuo.

Altro sull'autore

Da leggere dopo

Tutti gli articoli

Non sai come sta messa la tua app?

Esegui una scansione gratuita e ottieni un voto chiaro da A a F in una ventina di secondi. Senza account e senza carta.

Scansiona la tua app gratis

Controllo esterno automatizzato, non un audit completo. L'assenza di risultati non è una garanzia di sicurezza.