[{"data":1,"prerenderedAt":905},["ShallowReactive",2],{"blog-it-is-v0-safe":3,"blog-index-it":554},{"id":4,"title":5,"body":6,"category":508,"cover":509,"coverAlt":510,"description":511,"draft":512,"extension":513,"faq":514,"image":532,"keywords":533,"meta":543,"navigation":544,"ogTitle":5,"path":545,"published":546,"seo":547,"stem":548,"tldr":549,"updated":546,"__hash__":553},"blog_it\u002Fblog\u002Fis-v0-safe.md","Sicurezza di v0: tutte le 1.790 app v0 analizzate hanno preso A",{"type":7,"value":8,"toc":494},"minimark",[9,18,21,29,34,37,40,63,66,91,95,98,122,134,147,153,164,168,171,174,186,190,193,206,212,224,228,231,240,243,248,265,272,276,279,291,294,318,326,330,333,374,381,385,391,400,418,421,431,448,451,459,463,486],[10,11,12,13,17],"p",{},"Hai descritto un’app a v0, l’hai guardato costruirla e ti ha restituito un link\nche finisce in ",[14,15,16],"code",{},"vusercontent.net",". Funziona, sembra finita, e forse l’hai già\nmandata a qualcuno. Prima che clienti veri ci scrivano i loro dati, hai cercato\nla sicurezza di v0, e parte di quello che è uscito era una storia di attaccanti\nche usavano v0 per costruire false pagine di accesso.",[10,19,20],{},"Quella storia parla di quello che altri fanno con lo strumento. Questo articolo\nparla dell’app che hai fatto tu, e per quella abbiamo una misura. Tra il 12 e il\n14 agosto 2026 abbiamo eseguito gli stessi nove controlli esterni che chiunque\npuò lanciare gratis dalla nostra homepage su 30.998 app online, e 1.790 erano app\nv0. Tutte le 1.790 hanno preso A.",[10,22,23,24,28],{},"Ecco la parte che una classifica legge male: ",[25,26,27],"strong",{},"quella A dice più su che cosa\nc’era da controllare che su v0."," Letta come classifica, fa di v0 il builder più\nsicuro che abbiamo misurato. Letta con i suoi denominatori, descrive frontend\nsenza niente dietro, e smette di descrivere il tuo il giorno in cui colleghi un\ndatabase.",[30,31,33],"h2",{"id":32},"v0-è-sicuro","v0 è sicuro?",[10,35,36],{},"Su tutto quello che abbiamo potuto misurare di v0 in sé, sì. Il suo unico\nrilievo appartiene al dominio da cui v0 serve la tua app, e nient’altro è\ncomparso su nessuna delle 1.790, in nessuno dei nove controlli. Quello che\nquesto non può dirti è come si comporta la tua app quando contiene dati, perché\nquasi nessuna di queste ne conteneva.",[10,38,39],{},"Pensa a un’anteprima v0 come a uno schedario in uno showroom. I cassetti\nscorrono, le etichette ci sono, chiunque passi può aprirne uno, e ogni cassetto\nè vuoto. I nostri controlli hanno provato ogni cassetto e non hanno trovato\nniente in nessuno, ed è un resoconto esatto di uno schedario vuoto.",[10,41,42,43,45,46,53,54,57,58,62],{},"Quanto è vuoto lo dicono i numeri. Solo 17 delle 1.790 nominavano un progetto\nSupabase da qualche parte nel codice che pubblicano, e su tutte e 17 il nostro\ncontrollo sul database non ha ottenuto una risposta che potesse giudicare,\nquindi il conto delle tabelle leggibili su v0 è zero su zero. Tutte le 1.790\nerano servite da ",[14,44,16],{},", che Vercel descrive nella sua\n",[47,48,52],"a",{"href":49,"rel":50},"https:\u002F\u002Fgithub.com\u002Fpublicsuffix\u002Flist\u002Fpull\u002F2121",[51],"nofollow","richiesta alla Public Suffix List","\ncome il posto \"dove ospitiamo i contenuti inviati dagli utenti\" di v0. Un’app\nche pubblichi va su un indirizzo ",[14,55,56],{},"vercel.app"," o su un dominio tuo, dove niente\nla segnala come v0 da fuori, quindi quelle non sono nel conto. Il metodo e i\ndati completi sono ",[47,59,61],{"href":60},"\u002Fresearch\u002Fvibe-coded-app-security-2026","nel rapporto",".",[10,64,65],{},"Quindi \"v0 è sicuro?\" sono tre domande:",[67,68,69,76,85],"ol",{},[70,71,72,75],"li",{},[25,73,74],{},"Lo strumento."," Che cosa v0 controlla nel codice che scrive, e che cosa si\nrifiuta di pubblicare. Questa parte è di Vercel, ed è documentata.",[70,77,78,81,82,84],{},[25,79,80],{},"L’anteprima."," Lo schedario nello showroom, al suo indirizzo\n",[14,83,16],{},". Tutte le app che abbiamo misurato erano a questo stadio.",[70,86,87,90],{},[25,88,89],{},"L’app che riempi."," Lo stesso codice quando contiene i dati dei tuoi\nclienti, o gira su un dominio tuo. Quasi niente di quello che abbiamo\nmisurato era arrivato fin qui.",[30,92,94],{"id":93},"che-cosa-copre-la-sicurezza-di-v0-prima-che-tu-pubblichi","Che cosa copre la sicurezza di v0 prima che tu pubblichi",[10,96,97],{},"Tre cose, e la documentazione di v0 le nomina tutte e tre.",[10,99,100,103,104,109,110,113,114,116,117,121],{},[25,101,102],{},"Rilegge il codice che ha scritto."," La\n",[47,105,108],{"href":106,"rel":107},"https:\u002F\u002Fv0.app\u002Fdocs\u002Fsecurity",[51],"pagina sulla sicurezza"," di v0 dice che tutto il\ncodice generato \"passa per un’analisi di sicurezza prima dell’esecuzione\", e che\nv0 \"analizza l’uso di ",[14,111,112],{},"NEXT_PUBLIC_"," e avvisa gli utenti dei possibili rischi di\nsicurezza\". ",[14,115,112],{}," è il prefisso che dice a Next.js, il framework in cui\nscrive v0, di mettere un valore nel codice che ogni visitatore scarica.\n",[47,118,120],{"href":119},"\u002Fblog\u002Fvite-and-next-public-env-vars","Che cosa fa quel prefisso a una chiave"," è\nun articolo a parte.",[10,123,124,127,128,133],{},[25,125,126],{},"Rifiuta alcuni deploy."," Ad\n",[47,129,132],{"href":130,"rel":131},"https:\u002F\u002Fvercel.com\u002Fblog\u002Fv0-vibe-coding-securely",[51],"agosto 2025"," Vercel ha scritto\nche v0 aveva bloccato più di 17.000 deploy nei 30 giorni precedenti solo per\nsegreti esposti, e più di 100.000 deploy non sicuri dal lancio. Sono cifre di\nVercel sul blocco di Vercel, che vale per i deploy su Vercel. Una parte del\nnostro zero può essere opera di quel blocco. Da fuori non possiamo dire quanta.",[10,135,136,139,140,142,143,146],{},[25,137,138],{},"L’integrazione con Supabase mette il prefisso al posto giusto."," Collegata\ntramite il Vercel Marketplace, aggiunge una dozzina di variabili d’ambiente, e\nsolo due portano ",[14,141,112],{},": l’indirizzo del progetto e la chiave\npubblicabile, entrambe fatte per essere pubbliche. ",[14,144,145],{},"SUPABASE_SECRET_KEY"," e la\npassword del database restano senza, sul server.",[148,149],"diagram",{"alt":150,"caption":151,"src":152},"Dodici righe di impostazioni dentro una scatola. Dieci hanno valori mascherati e restano nella scatola. Due portano l’etichetta NEXT_PUBLIC_ e valori leggibili, e delle frecce portano quelle due oltre un muro tratteggiato fino a un visitatore fuori.","L’integrazione con Supabase aggiunge dodici variabili. Due arrivano a ogni visitatore, ed entrambe devono farlo: l’indirizzo del progetto e la chiave pubblicabile.","\u002Fblog\u002Fis-v0-safe\u002Ftwo-of-twelve-1600x720.png",[154,155,157],"callout",{"type":156},"note",[10,158,159,160,62],{},"Gratis, senza account, circa 20 secondi: la scansione sulla nostra homepage\nesegue tutti e nove questi controlli sulla tua app online e scrive \"Non è stato\npossibile controllare\" invece di una spunta per tutto ciò a cui non ha avuto\nrisposta. ",[47,161,163],{"href":162},"\u002Fsecurity-scanner","Scansiona la tua app",[30,165,167],{"id":166},"perché-a-unanteprima-v0-mancano-le-intestazioni-di-sicurezza","Perché a un’anteprima v0 mancano le intestazioni di sicurezza",[10,169,170],{},"Perché le imposta il dominio delle anteprime di v0, ogni app che ci sta sopra\nriceve la stessa risposta, e da dentro un’anteprima non puoi cambiarla.",[10,172,173],{},"Le intestazioni di sicurezza sono istruzioni che un sito manda con ogni pagina:\nusa sempre HTTPS, non lasciare che un altro sito mostri questa pagina dentro la\nsua, non indovinare che tipo di file è. Le manda chi serve la pagina. Le\nanteprime che abbiamo aperto il 3 ottobre 2026 mandavano una delle cinque che\ncerca il nostro controllo, quella che impone HTTPS, e nessuna delle altre\nquattro. È il rilievo su tutte le 1.790 app v0, ed è l’unico.",[10,175,176,177,180,181,185],{},"Lo showroom decide le proprie porte e i propri allarmi, e non puoi ricablarli per\nun solo schedario sul suo pavimento. Appena pubblichi, lo schedario è nel tuo\nufficio, e le intestazioni sono un’impostazione in ",[14,178,179],{},"vercel.json"," o nella tua\nconfigurazione di Next.js.\n",[47,182,184],{"href":183},"\u002Fblog\u002Fmissing-security-headers","Che cosa fa ogni intestazione, e le due che non costano niente","\nè un altro articolo.",[30,187,189],{"id":188},"unanteprima-vusercontentnet-è-pubblica","Un’anteprima vusercontent.net è pubblica?",[10,191,192],{},"Trattala come pubblica. Chiunque abbia l’indirizzo può aprirla, e gli indirizzi\ngirano.",[10,194,195,196,201,202,205],{},"Ognuna delle 1.790 si è aperta per noi senza login, e non abbiamo dovuto\nindovinarne nessuna: i loro indirizzi venivano da un archivio web pubblico che\naveva già salvato una copia di ognuna. Le\n",[47,197,200],{"href":198,"rel":199},"https:\u002F\u002Fv0.app\u002Fdocs\u002Fsharing",[51],"impostazioni di condivisione"," di v0 decidono chi\npuò vedere la tua ",[25,203,204],{},"chat",": privata per impostazione predefinita, poi il tuo\nteam, chiunque abbia il link, o chiunque sul web. La documentazione non dice che\nqueste impostazioni arrivino all’anteprima.",[10,207,208,209,211],{},"Un’anteprima, quindi, è lo schedario nello showroom. Va bene per mostrare il\ndesign a qualcuno e non per i documenti veri di nessuno. Vercel ha inserito\n",[14,210,16],{}," nella Public Suffix List a settembre 2024, il che fa trattare\nai browser ogni anteprima come un sito separato, così un’anteprima non può\nimpostare cookie per tutte le altre. Questo tiene le anteprime separate tra\nloro, e non fa niente per tenere privata la tua.",[10,213,214,215,217,218,223],{},"Se sei qui perché qualcuno ti ha mandato un link ",[14,216,16],{},": il dominio\nè di Vercel, e la pagina che ci sta sopra l’ha fatta chi l’ha chiesta con un\nprompt. Il 1° luglio 2025\n",[47,219,222],{"href":220,"rel":221},"https:\u002F\u002Fwww.okta.com\u002Fblog\u002Fthreat-intelligence\u002Fokta-observes-v0-ai-tool-used-to-build-phishing-sites\u002F",[51],"Okta ha segnalato","\nattaccanti che usavano v0 per costruire copie di vere pagine di accesso, e\nVercel ha limitato l’accesso a quelle che ha trovato. Non scrivere una password\nin un modulo di accesso a un indirizzo del genere se non te lo aspettavi.",[30,225,227],{"id":226},"che-cosa-cambia-quando-colleghi-supabase-a-v0","Che cosa cambia quando colleghi Supabase a v0",[10,229,230],{},"Cominci a riempire i cassetti, e i controlli tornati vuoti su v0 cominciano ad\navere qualcosa da controllare.",[10,232,233,234,239],{},"v0 aggiunge Supabase con un clic e, con le parole della\n",[47,235,238],{"href":236,"rel":237},"https:\u002F\u002Fv0.app\u002Fdocs\u002Fdatabases",[51],"sua stessa documentazione",", \"può generare ed\neseguire SQL. Questo ti permette di creare, aggiornare ed eliminare tabelle\".\nÈ così che nascono le tue tabelle. Ogni tabella è un cassetto, e la Row Level\nSecurity è la sua serratura: un’impostazione per tabella che decide quali righe\npuò leggere la chiave pubblicabile nella tua pagina. Quella chiave è fatta per\nessere pubblica, quindi la serratura è l’unica cosa che decide che cosa riceve\nuno sconosciuto.",[10,241,242],{},"Supabase mette quella serratura per impostazione predefinita sulle tabelle create\nnel suo Table Editor, e la lascia fuori sulle tabelle create eseguendo SQL, che è\nil modo in cui le crea v0.",[148,244],{"alt":245,"caption":246,"src":247},"Due corsie. In quella in alto, un’icona a griglia crea tre tabelle, ognuna con un lucchetto chiuso accanto. In quella in basso, un’icona di terminale con il logo v0 accanto crea tre tabelle, ognuna con il lucchetto aperto e disegnato in rosso.","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.","\u002Fblog\u002Fis-v0-safe\u002Ftwo-ways-to-make-a-table-1600x620.png",[10,249,250,251,255,256,259,260,264],{},"È lì che sono caduti i rilievi gravi su tutti gli altri builder. Delle 3.553 app\nLovable di cui abbiamo potuto interrogare il database, 2.017 hanno consegnato\nrighe a una richiesta senza login, e ",[47,252,254],{"href":253},"\u002Fblog\u002Fis-lovable-safe","i numeri di Lovable","\nsono l’aspetto che hanno i risultati di un builder quando nei cassetti ci sono\ndocumenti. Una serratura che si apre con qualsiasi chiave non è una serratura\nnemmeno lei: una policy che dice ",[14,257,258],{},"using (true)"," fa passare tutti mentre la\ndashboard mostra la tabella come protetta.\n",[47,261,263],{"href":262},"\u002Fblog\u002Fsupabase-rls-on-but-table-still-public","La RLS è attiva e la tua tabella è ancora pubblica","\nracconta tutta la storia.",[10,266,267,268,62],{},"Se invece i tuoi dati stanno dietro route a cui risponde il tuo codice server,\nla stessa domanda va fatta a quelle route:\n",[47,269,271],{"href":270},"\u002Fblog\u002Fopen-api-endpoint-exposed","che cosa significa un endpoint API aperto",[30,273,275],{"id":274},"che-cosa-cambia-quando-pubblichi-o-fai-il-deploy-da-solo","Che cosa cambia quando pubblichi o fai il deploy da solo",[10,277,278],{},"Lo schedario lascia lo showroom per il tuo ufficio, e le decisioni che prendeva\nil dominio di v0 diventano tue.",[10,280,281,282,287,288,290],{},"Pubblicare da v0 crea un progetto Vercel e chiede tre cose, secondo\n",[47,283,286],{"href":284,"rel":285},"https:\u002F\u002Fv0.app\u002Fdocs\u002Fdeployments",[51],"la documentazione sui deploy di v0",": il nome\ndel progetto, chi può accedere all’app pubblicata, e il dominio, un indirizzo\n",[14,289,56],{}," oppure uno tuo. Fermati sulla seconda. Le opzioni che vedi\ndipendono dal tuo piano, e tenere l’app per il tuo team o dietro una password\nfinché non l’hai controllata lascia fuori gli sconosciuti mentre guardi.",[10,292,293],{},"Tre cose passano a te quando pubblichi:",[295,296,297,303,312],"ul",{},[70,298,299,302],{},[25,300,301],{},"Le intestazioni."," Le porte e gli allarmi dell’ufficio adesso li imposti tu.",[70,304,305,308,309,311],{},[25,306,307],{},"Le variabili d’ambiente."," Stanno nelle impostazioni del tuo progetto, ed è\nin quella lista che una chiave riceve il prefisso ",[14,310,112],{}," oppure no.",[70,313,314,317],{},[25,315,316],{},"Il controllo sul tuo deploy, se lasci Vercel."," Vercel descrive il suo\nblocco come qualcosa che ferma i deploy su Vercel, quindi il codice che\nscarichi e ospiti altrove esce senza quel controllo.",[10,319,320,321,325],{},"In entrambi i casi hai lasciato il campione che abbiamo misurato. Un’app v0 sul\nsuo dominio con un database dietro ha più in comune con le\n",[47,322,324],{"href":323},"\u002Fblog\u002Fis-bolt-safe","app Bolt che abbiamo misurato"," che con queste 1.790\nanteprime.",[30,327,329],{"id":328},"come-controllare-la-tua-app-v0","Come controllare la tua app v0",[10,331,332],{},"Cinque cose, e le prime tre contano solo dopo che hai collegato un database o\npubblicato. Usa una finestra privata, così il tuo login non risponde al posto\ndi uno sconosciuto.",[67,334,335,347,353,359,365],{},[70,336,337,340,341,343,344,346],{},[25,338,339],{},"Leggi le tue variabili d’ambiente."," In v0 sono nel menu del progetto,\nsotto Settings, Environment Variables. Tutto quello che comincia con\n",[14,342,112],{}," sta nel codice che ogni visitatore scarica. L’indirizzo di un\nprogetto e una chiave pubblicabile ci stanno bene. Una chiave che ti costa\nsoldi, ",[14,345,145],{}," e qualunque cosa contenga una password, mai. Se\nuna di queste ha mai avuto il prefisso, ruotala prima presso il fornitore,\nperché il vecchio valore continua a funzionare finché non lo fai.",[70,348,349,352],{},[25,350,351],{},"Leggi la serratura di ogni tabella."," In Supabase apri Authentication →\nPolicies e scorri la lista. Una tabella con la Row Level Security disattivata\nè leggibile da chiunque abbia l’indirizzo del tuo progetto, e quell’indirizzo\nè nella tua pagina. Una policy che permette tutto a tutti conta come\ndisattivata.",[70,354,355,358],{},[25,356,357],{},"Scegli chi può vederla quando pubblichi."," Solo il tuo team, o una\npassword, finché le prime due non sono fatte.",[70,360,361,364],{},[25,362,363],{},"Imposta le intestazioni quando il dominio è tuo."," Due di queste sono una\nriga ciascuna.",[70,366,367,370,371,62],{},[25,368,369],{},"Poi guarda da fuori."," La nostra scansione esegue i nove controlli\nsull’indirizzo pubblicato come farebbe uno sconosciuto, impiega circa 20\nsecondi e non chiede un account:\n",[47,372,373],{"href":162},"scansiona la tua app gratis",[10,375,376,377,62],{},"Una scansione da fuori non vede il codice che ha scritto v0, né la chat in cui\nl’hai scritto, né una tabella che le tue pagine non nominano mai. I controlli di\nv0 vedono il codice da dentro e non vedono che cosa riceve uno sconosciuto\ndall’indirizzo. Usa quelli di v0 mentre costruisci, guarda da fuori dopo aver\npubblicato e, se i due non sono d’accordo su una tabella leggibile, fidati della\nrisposta da fuori, perché è quella che riceve uno sconosciuto. La versione in\nparole semplici per questa piattaforma è\n",[47,378,380],{"href":379},"\u002Fis-your-v0-app-safe","la tua app v0 è sicura?",[30,382,384],{"id":383},"perché-resti-così-dopo-la-pubblicazione","Perché resti così dopo la pubblicazione",[10,386,387,390],{},[25,388,389],{},"Una A su un’anteprima descrive un’anteprima."," Il giorno in cui colleghi un\ndatabase o pubblichi sul tuo dominio, il tuo voto può cambiare, e niente sul tuo\nschermo ti dice che è cambiato.",[10,392,393],{},[25,394,395,399],{},[47,396,398],{"href":397},"\u002Fpricing","Reeve Monitor"," rifà i nove controlli per te:",[295,401,402,405,408,415],{},[70,403,404],{},"tutti e nove i controlli ogni ora, su un massimo di tre app",[70,406,407],{},"se l’app è raggiungibile, ogni 60 secondi",[70,409,410,411,414],{},"un messaggio quando un risultato ",[25,412,413],{},"cambia",", così una tabella o una chiave nuova non aspetta che tu guardi",[70,416,417],{},"un rapporto mensile di quello che ha visto",[10,419,420],{},"Monitor costa €12 al mese a listino, con sette giorni gratis prima di addebitarti\nqualcosa. La pagina dei prezzi a volte è sotto la cifra indicata qui e mai sopra.",[10,422,423],{},[25,424,425,426,430],{},"Se la tua app v0 tiene i dati su Supabase, ",[47,427,429],{"href":428},"\u002Fsupabase-backups","Reeve Care","\nconserva una copia del tuo database Supabase.",[295,432,433,436,439,442,445],{},[70,434,435],{},"una copia cifrata ogni notte, tenuta dove il tuo progetto non può arrivare",[70,437,438],{},"ogni copia verificata prima di contare, con il conteggio delle righe di ogni tabella",[70,440,441],{},"un ripristino con un clic quando ti serve",[70,443,444],{},"anche i tuoi file caricati, appena colleghi una credenziale di Storage",[70,446,447],{},"tutto ciò che fa Monitor",[10,449,450],{},"Care costa €49 al mese a listino per un’app, con gli stessi sette giorni gratis.",[10,452,453,454,458],{},"La documentazione di v0 dice che può eliminare tabelle oltre a crearle, e\nnessuno dei nove controlli qui sopra riporterebbe indietro le sue righe.\n",[47,455,457],{"href":456},"\u002Fblog\u002Fai-agent-deleted-my-database","Il giorno in cui un agente IA ha cancellato un database di produzione","\nmostra com’è vista da dentro.",[30,460,462],{"id":461},"cosa-fare-questa-settimana","Cosa fare questa settimana",[464,465,466],"key-takeaways",{},[295,467,468,471,477,480,483],{},[70,469,470],{},"Se la tua app v0 è ancora un’anteprima, tratta il suo indirizzo come pubblico e tienine fuori i dati di persone reali.",[70,472,473,474,476],{},"Prima di collegare un database, decidi dove sta ogni chiave: ",[14,475,112],{}," per l’indirizzo del progetto e la chiave pubblicabile, e niente vicino al browser per tutto il resto.",[70,478,479],{},"Dopo aver collegato Supabase, leggi la policy di ogni tabella creata da v0, e tratta come disattivata una che permette tutto a tutti.",[70,481,482],{},"Pubblica solo per il tuo team o dietro una password finché non è fatto, poi controlla l’indirizzo pubblicato da fuori.",[70,484,485],{},"Tieni una copia del tuo database dove né v0 né il tuo progetto possono arrivare, e controlla che la copia si ripristini.",[10,487,488,489,493],{},"Comincia dalle variabili d’ambiente, perché decidono che cosa scarica ogni\nvisitatore. Se stai ancora scegliendo un builder,\n",[47,490,492],{"href":491},"\u002Fblog\u002Fsafest-ai-app-builder","qual è il builder di app IA più sicuro"," mette i\ncinque uno accanto all’altro.",{"title":495,"searchDepth":496,"depth":496,"links":497},"",3,[498,500,501,502,503,504,505,506,507],{"id":32,"depth":499,"text":33},2,{"id":93,"depth":499,"text":94},{"id":166,"depth":499,"text":167},{"id":188,"depth":499,"text":189},{"id":226,"depth":499,"text":227},{"id":274,"depth":499,"text":275},{"id":328,"depth":499,"text":329},{"id":383,"depth":499,"text":384},{"id":461,"depth":499,"text":462},"Basi della sicurezza","\u002Fblog\u002Fis-v0-safe\u002Fcover-1200x630.png","Uno schedario con il logo v0 e un cassetto vuoto aperto, accanto a uno schedario con tutti i cassetti chiusi a chiave.","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.",false,"md",[515,517,520,523,526,529],{"q":33,"a":516},"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.",{"q":518,"a":519},"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.",{"q":521,"a":522},"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.",{"q":524,"a":525},"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.",{"q":527,"a":528},"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.",{"q":530,"a":531},"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.","\u002Fblog\u002Fis-v0-safe\u002Fcard-800x500.png",[534,535,536,537,538,539,540,541,542],"sicurezza v0","v0 è sicuro","sicurezza v0.dev","v0 è sicuro da usare","sicurezza vercel v0","le app v0 sono sicure","sicurezza app v0","sicurezza deploy v0","vusercontent.net è sicuro",{},true,"\u002Fblog\u002Fis-v0-safe","2026-10-03",{"title":5,"description":511},"blog\u002Fis-v0-safe",[550,551,552],"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.","shEjZmTUs_UZtAVLXNEd1R3VnO8z-17VDzfrgr1ChvE",[555,561,567,573,579,585,591,597,603,604,609,615,621,627,634,640,646,651,656,662,668,674,679,685,691,696,702,708,714,720,726,732,737,743,749,755,761,767,773,778,784,790,796,802,808,814,820,826,832,838,844,850,856,861,867,872,878,884,889,894,900],{"path":556,"title":557,"description":558,"published":559,"category":508,"image":560,"draft":512},"\u002Fblog\u002Fstorage-upload-violates-row-level-security","\"Row-level security policy for table objects\" in upload","\"New row violates row-level security policy for table objects\" vuol dire che al tuo upload manca una regola insert. Rendere pubblico il bucket non ne aggiunge.","2026-10-11","\u002Fblog\u002Fstorage-upload-violates-row-level-security\u002Fcard-800x500.png",{"path":562,"title":563,"description":564,"published":565,"category":508,"image":566,"draft":512},"\u002Fblog\u002Fbase44-security-scan","Scansione di sicurezza Base44: ciò che vede solo lei","La scansione di sicurezza Base44 controlla sette tipi di problema dall’interno. Ecco la metà che legge e che nessun altro legge, e quella che non guarda mai.","2026-10-10","\u002Fblog\u002Fbase44-security-scan\u002Fcard-800x500.png",{"path":568,"title":569,"description":570,"published":571,"category":508,"image":572,"draft":512},"\u002Fblog\u002Fapi-key-leaked-what-to-do","La tua chiave API è trapelata. L'ordine in cui muoverti","Una chiave API è trapelata e non sai da cosa cominciare. Non tutte le chiavi nel frontend lo sono, e l'ordine conta più della velocità.","2026-10-09","\u002Fblog\u002Fapi-key-leaked-what-to-do\u002Fcard-800x500.png",{"path":574,"title":575,"description":576,"published":577,"category":508,"image":578,"draft":512},"\u002Fblog\u002Finfinite-recursion-in-policy-for-relation","\"Infinite recursion detected in policy\" senza disattivare RLS","\"Infinite recursion detected in policy for relation\" significa che la tua policy ha interrogato la tabella che protegge. Ecco come rompere il cerchio.","2026-10-08","\u002Fblog\u002Finfinite-recursion-in-policy-for-relation\u002Fcard-800x500.png",{"path":580,"title":581,"description":582,"published":583,"category":508,"image":584,"draft":512},"\u002Fblog\u002Fno-api-key-found-in-request","\"No API key found in request\" su Supabase, e la correzione sbagliata","\"No API key found in request\" significa che la tua richiesta è arrivata a Supabase senza chiave. Quasi tutte le risposte indicano le regole del database.","2026-10-07","\u002Fblog\u002Fno-api-key-found-in-request\u002Fcard-800x500.png",{"path":586,"title":587,"description":588,"published":589,"category":508,"image":590,"draft":512},"\u002Fblog\u002Fis-base44-safe","Base44 è sicuro? Cosa abbiamo trovato in 5.442 app","Base44 è sicuro? Abbiamo passato nove controlli su 5.442 app Base44 online. Quasi tutte hanno preso B, per motivi che il proprietario non ha mai scelto.","2026-10-06","\u002Fblog\u002Fis-base44-safe\u002Fcard-800x500.png",{"path":592,"title":593,"description":594,"published":595,"category":508,"image":596,"draft":512},"\u002Fblog\u002Fmove-a-secret-to-an-edge-function","Nascondere una chiave API: spostala in una Edge Function Supabase","Nascondere una chiave API vuol dire toglierla dal browser, e una Edge Function Supabase è il posto più piccolo dove metterla. Due passaggi contano di più.","2026-10-05","\u002Fblog\u002Fmove-a-secret-to-an-edge-function\u002Fcard-800x500.png",{"path":598,"title":599,"description":600,"published":601,"category":508,"image":602,"draft":512},"\u002Fblog\u002Fenv-file-exposed-on-your-server","Il tuo file .env è esposto? I dodici percorsi da provare","Il tuo file .env è esposto sul tuo server web? Dodici indirizzi te lo dicono, e una risposta significa che tutto quello che contiene è già pubblico.","2026-10-04","\u002Fblog\u002Fenv-file-exposed-on-your-server\u002Fcard-800x500.png",{"path":545,"title":5,"description":511,"published":546,"category":508,"image":532,"draft":512},{"path":323,"title":605,"description":606,"published":607,"category":508,"image":608,"draft":512},"Bolt è sicuro? Cosa abbiamo trovato in 1.123 app Bolt","Bolt è sicuro? Abbiamo passato 1.123 app Bolt online per nove controlli. L’hosting era pulito. I rilievi erano chiavi e tabelle aperte dentro le app.","2026-10-02","\u002Fblog\u002Fis-bolt-safe\u002Fcard-800x500.png",{"path":610,"title":611,"description":612,"published":613,"category":508,"image":614,"draft":512},"\u002Fblog\u002Fis-supabase-down-or-your-app","Supabase è down o è la tua app? Come capirlo","Supabase è down o è la tua app? Un progetto in pausa, un database pieno e un tuo errore sembrano la stessa cosa. Quattro controlli li separano.","2026-10-01","\u002Fblog\u002Fis-supabase-down-or-your-app\u002Fcard-800x500.png",{"path":616,"title":617,"description":618,"published":619,"category":508,"image":620,"draft":512},"\u002Fblog\u002Fdoes-supabase-encrypt-my-data","Supabase crittografa i miei dati? Sì. Ecco da cosa protegge","Supabase crittografa i dati? Sì: AES-256 a riposo, TLS in transito, SOC 2 e ISO 27001. Cosa copre ciascuno, e la fuga di dati che nessuno di questi ferma.","2026-09-30","\u002Fblog\u002Fdoes-supabase-encrypt-my-data\u002Fcard-800x500.png",{"path":622,"title":623,"description":624,"published":625,"category":508,"image":626,"draft":512},"\u002Fblog\u002Fsupabase-free-plan-limits","Supabase: prezzi e limiti del piano gratuito, uno per uno","Prezzi e limiti del piano gratuito di Supabase: 500 MB di database, 5 GB di egress e nessun backup. Cosa succede a ogni soglia e cosa cambia Pro a $25.","2026-09-29","\u002Fblog\u002Fsupabase-free-plan-limits\u002Fcard-800x500.png",{"path":628,"title":629,"description":630,"published":631,"category":632,"image":633,"draft":512},"\u002Fblog\u002Ftest-your-supabase-backup","Testa il tuo backup di Supabase prima del giorno in cui serve","Come testare il tuo backup di Supabase: ripristinarlo in un progetto di prova, contare le righe, accedere e cercare la riga che manca a un file troncato.","2026-09-28","Backups","\u002Fblog\u002Ftest-your-supabase-backup\u002Fcard-800x500.png",{"path":635,"title":636,"description":637,"published":638,"category":632,"image":639,"draft":512},"\u002Fblog\u002Fsupabase-backup-github-action","Backup gratis di Supabase con una GitHub Action, e il tranello","Un backup di Supabase con una GitHub Action è gratis e va bene per molte app. Il workflow, la connection string giusta e l'egress di ogni esecuzione.","2026-09-27","\u002Fblog\u002Fsupabase-backup-github-action\u002Fcard-800x500.png",{"path":641,"title":642,"description":643,"published":644,"category":632,"image":645,"draft":512},"\u002Fblog\u002Fdownload-your-supabase-backup","Perché non puoi scaricare il tuo backup di Supabase","Non puoi scaricare il tuo backup di Supabase su un progetto recente, perché la copia giornaliera è uno snapshot fisico. Come verificarlo e tenere una copia tua.","2026-09-26","\u002Fblog\u002Fdownload-your-supabase-backup\u002Fcard-800x500.png",{"path":647,"title":648,"description":649,"published":644,"category":508,"image":650,"draft":512},"\u002Fblog\u002Fsupabase-permission-denied-for-table","Supabase \"permission denied for table\": il grant mancante","Dal 30 ottobre una nuova tabella di Supabase risponde \"permission denied for table\" finché non concedi l'accesso. Il grant della mail è metà della soluzione.","\u002Fblog\u002Fsupabase-permission-denied-for-table\u002Fcard-800x500.png",{"path":270,"title":652,"description":653,"published":654,"category":508,"image":655,"draft":512},"Un endpoint API aperto è un problema di sicurezza? Leggi il JSON","La tua scansione ha segnalato un endpoint API aperto. Quanto conti dipende da che cosa è tornato, e la maggior parte di quelli trovati era della piattaforma.","2026-09-25","\u002Fblog\u002Fopen-api-endpoint-exposed\u002Fcard-800x500.png",{"path":657,"title":658,"description":659,"published":660,"category":508,"image":661,"draft":512},"\u002Fblog\u002Flovable-security-scan","Scansione di sicurezza Lovable: cosa non può dimostrare","Scansione di sicurezza Lovable: cosa controllano Quick scan e Deep scan, quando parte ciascuno, e l’unica cosa che nessuna scansione dall’interno dimostra.","2026-09-24","\u002Fblog\u002Flovable-security-scan\u002Fcard-800x500.png",{"path":663,"title":664,"description":665,"published":666,"category":632,"image":667,"draft":512},"\u002Fblog\u002Fsupabase-backup-auth-users","Perché nel tuo dump Supabase non ci sono utenti","Lancia supabase db dump da solo e ottieni la forma del tuo database e nessuna delle sue righe, senza lo schema auth in cui vivono i tuoi utenti.","2026-09-23","\u002Fblog\u002Fsupabase-backup-auth-users\u002Fcard-800x500.png",{"path":669,"title":670,"description":671,"published":672,"category":508,"image":673,"draft":512},"\u002Fblog\u002Fdomain-and-certificate-expiry","Dominio scaduto, sito offline: cosa succede adesso","Il tuo dominio è scaduto e il sito è offline. Il conto alla rovescia che parte, perché il certificato è il problema minore, e come controllarli entrambi.","2026-09-22","\u002Fblog\u002Fdomain-and-certificate-expiry\u002Fcard-800x500.png",{"path":253,"title":675,"description":676,"published":677,"category":508,"image":678,"draft":512},"Lovable è sicuro? Cosa abbiamo trovato in 18.554 app Lovable","Lovable è sicuro? Abbiamo passato 18.554 app Lovable online per nove controlli. La piattaforma è risultata la più pulita di cinque. I rilievi stavano nelle app.","2026-09-21","\u002Fblog\u002Fis-lovable-safe\u002Fcard-800x500.png",{"path":680,"title":681,"description":682,"published":683,"category":508,"image":684,"draft":512},"\u002Fblog\u002Fvibe-coded-app-security-checklist","La checklist di sicurezza del vibe coding, in nove controlli","Una checklist di sicurezza del vibe coding in nove voci, ognuna verificabile dall’esterno sulla tua app dal vivo, e ognuna con un test di una riga.","2026-09-20","\u002Fblog\u002Fvibe-coded-app-security-checklist\u002Fcard-800x500.png",{"path":686,"title":687,"description":688,"published":689,"category":508,"image":690,"draft":512},"\u002Fblog\u002Fstripe-secret-key-in-frontend","Una chiave segreta Stripe nel frontend può muovere denaro","Una chiave segreta Stripe esposta nel tuo frontend può rimborsare, addebitare e leggere ogni scheda cliente che hai. La tua chiave pk_live_ ci sta bene.","2026-09-19","\u002Fblog\u002Fstripe-secret-key-in-frontend\u002Fcard-800x500.png",{"path":119,"title":692,"description":693,"published":694,"category":508,"image":695,"draft":512},"Variabili d’ambiente Vite esposte: il prefisso vuol dire pubblica","Variabili d’ambiente Vite esposte: la tua app ha fatto ciò che il prefisso chiedeva. VITE_ e NEXT_PUBLIC_ vogliono dire pubblica, e l’IA non sapeva il costo.","2026-09-18","\u002Fblog\u002Fvite-and-next-public-env-vars\u002Fcard-800x500.png",{"path":697,"title":698,"description":699,"published":700,"category":508,"image":701,"draft":512},"\u002Fblog\u002Fbase44-source-maps","Sicurezza Base44: cosa segnala uno scan e cosa tocca a te sistemare","Sicurezza Base44 su 5.438 app scansionate: tre segnalazioni su quasi tutte sono della piattaforma, la source map è il badge di Base44, la tua parte è corta.","2026-09-17","\u002Fblog\u002Fbase44-source-maps\u002Fcard-800x500.png",{"path":703,"title":704,"description":705,"published":706,"category":508,"image":707,"draft":512},"\u002Fblog\u002Fis-cursor-ai-safe","Cursor AI è sicuro? L’editor, il codice e l’app che hai pubblicato","Cursor AI è sicuro? Tre domande in una ricerca: cosa tiene Cursor, cosa sbaglia il codice che scrive, e se l’app che hai pubblicato è aperta.","2026-09-16","\u002Fblog\u002Fis-cursor-ai-safe\u002Fcard-800x500.png",{"path":709,"title":710,"description":711,"published":712,"category":508,"image":713,"draft":512},"\u002Fblog\u002Fis-replit-safe","Replit è sicuro? Cosa abbiamo trovato in 3.042 app Replit online","Replit è sicuro? Abbiamo passato 3.042 app Replit online per nove controlli esterni. I rilievi stavano nell’app pubblicata, non nell’host.","2026-09-15","\u002Fblog\u002Fis-replit-safe\u002Fcard-800x500.png",{"path":715,"title":716,"description":717,"published":718,"category":632,"image":719,"draft":512},"\u002Fblog\u002Fsupabase-storage-backup","Supabase storage backup: la copia del database non ha nessun file","Un Supabase storage backup è un lavoro a parte. I backup del database tengono la lista dei tuoi file e nessuno dei file, quindi ogni upload resta rotto.","2026-09-14","\u002Fblog\u002Fsupabase-storage-backup\u002Fcard-800x500.png",{"path":721,"title":722,"description":723,"published":724,"category":632,"image":725,"draft":512},"\u002Fblog\u002Fsupabase-point-in-time-recovery","Point-in-time recovery di Supabase: prezzo e limiti","Il point-in-time recovery di Supabase riavvolge il database a qualsiasi secondo della settimana scorsa. $100 al mese oltre a Pro, e copre solo il database.","2026-09-13","\u002Fblog\u002Fsupabase-point-in-time-recovery\u002Fcard-800x500.png",{"path":727,"title":728,"description":729,"published":730,"category":632,"image":731,"draft":512},"\u002Fblog\u002Fsupabase-project-paused-recover","Progetto Supabase in pausa? I tuoi dati sono ancora lì","Supabase ha messo in pausa il tuo progetto dopo una settimana senza attività. Non è cancellato niente, Ripristina è accanto al nome e hai un anno di tempo.","2026-09-12","\u002Fblog\u002Fsupabase-project-paused-recover\u002Fcard-800x500.png",{"path":491,"title":733,"description":734,"published":735,"category":508,"image":736,"draft":512},"Qual è il builder di app con IA più sicuro? 30.998 app testate","Qual è il builder di app con IA più sicuro? Abbiamo scansionato 30.998 app online di Lovable, Base44, Replit, v0 e Bolt. Non è il builder a decidere il voto.","2026-09-11","\u002Fblog\u002Fsafest-ai-app-builder\u002Fcard-800x500.png",{"path":738,"title":739,"description":740,"published":741,"category":508,"image":742,"draft":512},"\u002Fblog\u002Fenable-rls-on-every-supabase-table","Attiva Row Level Security su ogni tabella Supabase, poi verificalo","Attivare Row Level Security su Supabase senza una policy chiude del tutto la tabella. Una policy senza il flag non fa nulla. Ecco lo SQL, e la verifica.","2026-09-10","\u002Fblog\u002Fenable-rls-on-every-supabase-table\u002Fcard-800x500.png",{"path":744,"title":745,"description":746,"published":747,"category":508,"image":748,"draft":512},"\u002Fblog\u002Fsupabase-rls-disabled-in-public","Supabase \"RLS disabled in public\": cosa non vede l'avviso","Supabase segnala \"RLS disabled in public\" come errore. Non dice nulla della policy di lettura che lascia la tua tabella altrettanto aperta.","2026-09-09","\u002Fblog\u002Fsupabase-rls-disabled-in-public\u002Fcard-800x500.png",{"path":750,"title":751,"description":752,"published":753,"category":508,"image":754,"draft":512},"\u002Fblog\u002Frotate-supabase-service-role-key","Come ruotare una chiave service_role Supabase trapelata","Supabase dice di chiudere prima la falla. Altre guide dicono di ruotare subito. Quale sia giusto dipende da dove è finita la tua chiave service_role.","2026-09-08","\u002Fblog\u002Frotate-supabase-service-role-key\u002Fcard-800x500.png",{"path":756,"title":757,"description":758,"published":759,"category":508,"image":760,"draft":512},"\u002Fblog\u002Fvibe-coding-security-scanners-compared","Scanner di sicurezza per vibe coding a confronto, il nostro incluso","Il miglior scanner di sicurezza per vibe coding dipende da tre domande che nessun elenco di funzioni affronta. Dieci strumenti a confronto, con i prezzi.","2026-09-07","\u002Fblog\u002Fvibe-coding-security-scanners-compared\u002Fcard-800x500.png",{"path":762,"title":763,"description":764,"published":765,"category":508,"image":766,"draft":512},"\u002Fblog\u002Fsupabase-security-checker","Supabase security checker: i cinque controlli da fare da soli","Un Supabase security checker legge la tua app pubblicata invece delle impostazioni del progetto. Ecco i cinque controlli che esegue e come farli da solo.","2026-09-06","\u002Fblog\u002Fsupabase-security-checker\u002Fcard-800x500.png",{"path":768,"title":769,"description":770,"published":771,"category":508,"image":772,"draft":512},"\u002Fblog\u002Fvibe-coding-security-scanner","Scanner di sicurezza per vibe coding: cosa si perde","Uno scanner di sicurezza per vibe coding legge la tua app dal vivo, da fuori. Cosa copre, le quattro cose che non può vedere e come leggere il risultato.","2026-09-05","\u002Fblog\u002Fvibe-coding-security-scanner\u002Fcard-800x500.png",{"path":183,"title":774,"description":775,"published":776,"category":508,"image":777,"draft":512},"Intestazioni di sicurezza mancanti: quando contano","Le intestazioni di sicurezza mancanti sono il rilievo che il nostro scanner stampa più spesso. Da cosa proteggono e quando sono la riga meno urgente.","2026-09-04","\u002Fblog\u002Fmissing-security-headers\u002Fcard-800x500.png",{"path":779,"title":780,"description":781,"published":782,"category":508,"image":783,"draft":512},"\u002Fblog\u002Fopenai-api-key-exposed-in-frontend","La tua chiave API OpenAI è esposta nel frontend. Ruotala.","Una chiave API OpenAI esposta nel frontend non si può legare a nessun dominio. Ruotala oggi, sposta la chiamata sul tuo server e metti un tetto di spesa.","2026-09-03","\u002Fblog\u002Fopenai-api-key-exposed-in-frontend\u002Fcard-800x500.png",{"path":785,"title":786,"description":787,"published":788,"category":508,"image":789,"draft":512},"\u002Fblog\u002Fwhat-secrets-leak-from-vibe-coded-apps","Chiave API esposta nel frontend: cosa spediscono 30.998 app","Una chiave API esposta nel tuo frontend è quasi sempre una chiave di Google Maps. Abbiamo scansionato 30.998 app vibe-coded e contato cosa esce davvero.","2026-09-02","\u002Fblog\u002Fwhat-secrets-leak-from-vibe-coded-apps\u002Fcard-800x500.png",{"path":791,"title":792,"description":793,"published":794,"category":632,"image":795,"draft":512},"\u002Fblog\u002Fsupabase-backup-tools-compared","Strumenti di backup Supabase a confronto, il nostro incluso","Quattro tipi di strumento di backup Supabase, cosa copia davvero ognuno, e il caso in cui una GitHub Action gratuita batte il pagare chiunque, noi inclusi.","2026-09-01","\u002Fblog\u002Fsupabase-backup-tools-compared\u002Fcard-800x500.png",{"path":797,"title":798,"description":799,"published":800,"category":508,"image":801,"draft":512},"\u002Fblog\u002Freplit-secrets-explained","Come usare i secret su Replit, e cosa viene comunque pubblicato","Come usare i secret su Replit: aggiungerne uno, rileggerlo e risolvere le due cause dell'undefined. E le chiavi che lo strumento non riesce a proteggere.","2026-08-31","\u002Fblog\u002Freplit-secrets-explained\u002Fcard-800x500.png",{"path":803,"title":804,"description":805,"published":806,"category":632,"image":807,"draft":512},"\u002Fblog\u002Fback-up-supabase-free-tier","Backup del piano gratuito Supabase: farne uno senza terminale","Sul piano gratuito Supabase non esistono backup: la copia la fai tu. Come farne uno dalla dashboard e che cosa si lascia dietro la via del CSV.","2026-08-30","\u002Fblog\u002Fback-up-supabase-free-tier\u002Fcard-800x500.png",{"path":809,"title":810,"description":811,"published":812,"category":508,"image":813,"draft":512},"\u002Fblog\u002Fis-supabase-secure","Supabase è sicuro? Sì. Il tuo progetto è un'altra questione","Supabase è sicuro? La piattaforma è certificata, cifrata e sottoposta a pentest. La loro documentazione dice dove finisce quello e iniziano le tue impostazioni.","2026-08-29","\u002Fblog\u002Fis-supabase-secure\u002Fcard-800x500.png",{"path":815,"title":816,"description":817,"published":818,"category":508,"image":819,"draft":512},"\u002Fblog\u002Fwhere-to-find-supabase-api-keys","Dove trovare le chiavi API di Supabase: anon, service_role e URL","L'URL del progetto, la chiave anon e la chiave service_role stanno su una pagina della dashboard. Ecco dove si trova e quale dei quattro va nella tua app.","2026-08-28","\u002Fblog\u002Fwhere-to-find-supabase-api-keys\u002Fcard-800x500.png",{"path":821,"title":822,"description":823,"published":824,"category":508,"image":825,"draft":512},"\u002Fblog\u002Fnew-row-violates-row-level-security-policy","New row violates row-level security policy su Supabase. E adesso?","\"New row violates row-level security policy\" significa che Supabase ha rifiutato una scrittura. La soluzione veloce riapre la tabella a chiunque.","2026-08-27","\u002Fblog\u002Fnew-row-violates-row-level-security-policy\u002Fcard-800x500.png",{"path":827,"title":828,"description":829,"published":830,"category":508,"image":831,"draft":512},"\u002Fblog\u002Fcors-wildcard-security-risk","Un wildcard CORS è un rischio di sicurezza? Quasi mai.","Un wildcard CORS è un rischio di sicurezza? Di solito è il valore predefinito del tuo builder e non consegna nulla che il tuo server non desse già a chiunque.","2026-08-26","\u002Fblog\u002Fcors-wildcard-security-risk\u002Fcard-800x500.png",{"path":833,"title":834,"description":835,"published":836,"category":632,"image":837,"draft":512},"\u002Fblog\u002Fsupabase-branching-is-not-a-backup","Il branching di Supabase non è un backup. Va solo in avanti.","Perché il branching di Supabase non è un backup: un branch parte senza i tuoi dati e un merge sposta solo lo schema. A cosa serve davvero e cosa usare invece.","2026-08-25","\u002Fblog\u002Fsupabase-branching-is-not-a-backup\u002Fcard-800x500.png",{"path":839,"title":840,"description":841,"published":842,"category":632,"image":843,"draft":512},"\u002Fblog\u002Fhow-to-restore-a-supabase-backup","Come ripristinare un backup Supabase, e cosa si rompe dopo","Come ripristinare un backup Supabase dalla dashboard o da un file di dump, che cosa sostituisce il ripristino e perché la tua app può restare rotta lo stesso.","2026-08-24","\u002Fblog\u002Fhow-to-restore-a-supabase-backup\u002Fcard-800x500.png",{"path":845,"title":846,"description":847,"published":848,"category":508,"image":849,"draft":512},"\u002Fblog\u002Fsupabase-storage-bucket-public","Il tuo bucket Supabase Storage è pubblico. È un problema?","Un bucket Supabase Storage pubblico significa che chi ha l'URL di un file può aprirlo. Non significa che qualcuno possa elencare quello che c'è dentro.","2026-08-23","\u002Fblog\u002Fsupabase-storage-bucket-public\u002Fcard-800x500.png",{"path":851,"title":852,"description":853,"published":854,"category":508,"image":855,"draft":512},"\u002Fblog\u002Fgoogle-api-key-exposed-in-frontend","Una chiave API Google nel frontend è un problema?","Una chiave API Google esposta nel frontend è la chiave che il nostro scanner trova più spesso, e di solito va bene così. Lo decide una impostazione gratuita.","2026-08-22","\u002Fblog\u002Fgoogle-api-key-exposed-in-frontend\u002Fcard-800x500.png",{"path":456,"title":857,"description":858,"published":859,"category":632,"image":860,"draft":512},"Un agente IA ha cancellato i miei dati Supabase. Cosa recupero?","Un agente IA ha cancellato dati dal tuo database. Quello che puoi recuperare era già deciso prima che partisse, e i prossimi minuti decidono il resto.","2026-08-21","\u002Fblog\u002Fai-agent-deleted-my-database\u002Fcard-800x500.png",{"path":862,"title":863,"description":864,"published":865,"category":508,"image":866,"draft":512},"\u002Fblog\u002Fcan-anyone-read-your-supabase-database","Chiunque può leggere il tuo database Supabase? 3.680 app testate","Chiunque può leggere il tuo database Supabase senza fare login? Abbiamo scansionato 30.998 app online create con i builder IA e misurato quante rispondono sì.","2026-08-18","\u002Fblog\u002Fcan-anyone-read-your-supabase-database\u002Fcard-800x500.png",{"path":868,"title":869,"description":870,"published":865,"category":508,"image":871,"draft":512},"\u002Fblog\u002Fsource-maps-exposed-in-production","Source map esposte: la tua app sta pubblicando il codice originale","Una source map esposta permette a chiunque di leggere il codice originale della tua app, commenti inclusi. Il controllo da 30 secondi e cosa conta davvero.","\u002Fblog\u002Fsource-maps-exposed-in-production\u002Fcard-800x500.png",{"path":873,"title":874,"description":875,"published":876,"category":508,"image":877,"draft":512},"\u002Fblog\u002Fsupabase-new-api-keys","Le nuove chiavi API di Supabase: quale va nella tua app?","Supabase ha sostituito anon e service_role con chiavi pubblicabili e segrete. Quale sta bene nella tua app, e quale non deve starci mai?","2026-08-12","\u002Fblog\u002Fsupabase-new-api-keys\u002Fcard-800x500.png",{"path":879,"title":880,"description":881,"published":882,"category":632,"image":883,"draft":512},"\u002Fblog\u002Fdoes-supabase-back-up-my-database","Supabase fa il backup del mio database? Dipende dal tuo piano.","Supabase fa il backup del tuo database? Ogni giorno sui piani a pagamento, mai su quello gratuito. Come capire cosa hai e cosa quella copia non copre.","2026-08-11","\u002Fblog\u002Fdoes-supabase-back-up-my-database\u002Fcard-800x500.png",{"path":262,"title":885,"description":886,"published":887,"category":508,"image":888,"draft":512},"Supabase Row Level Security è attivo. La tabella resta pubblica.","Attivare Supabase Row Level Security non protegge una tabella. Lo fanno le policy, e quella che ha rimesso in piedi la tua app può far entrare chiunque.","2026-08-10","\u002Fblog\u002Fsupabase-rls-on-but-table-still-public\u002Fcard-800x500.png",{"path":890,"title":891,"description":892,"published":887,"category":632,"image":893,"draft":512},"\u002Fblog\u002Fversion-history-is-not-a-backup","La cronologia delle versioni non è un backup dei tuoi dati.","Lovable e Bolt tengono una cronologia delle versioni del codice. Il tuo database è un servizio a parte, e tornare indietro non ti restituisce i dati.","\u002Fblog\u002Fversion-history-is-not-a-backup\u002Fcard-800x500.png",{"path":895,"title":896,"description":897,"published":898,"category":632,"image":899,"draft":512},"\u002Fblog\u002Fthree-ways-to-back-up-a-supabase-database","Tre modi per fare il backup di un database Supabase, e cosa manca","Il pannello, pg_dump e un servizio gestito. Che cosa salva davvero ciascuno, cosa lascia fuori senza dirlo e quale sopravvive alla perdita dell'account.","2026-08-09","\u002Fblog\u002Fthree-ways-to-back-up-a-supabase-database\u002Fcard-800x500.png",{"path":901,"title":902,"description":903,"published":898,"category":508,"image":904,"draft":512},"\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend","Quali chiavi API sono sicure nel browser e quali no","La tua chiave anon di Supabase è fatta per essere pubblica. La chiave service_role no, e ignora ogni regola che imposti. Come distinguerle.","\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend\u002Fcard-800x500.png",1791705965132]