[{"data":1,"prerenderedAt":790},["ShallowReactive",2],{"blog-it-supabase-storage-backup":3,"blog-index-it":442},{"id":4,"title":5,"body":6,"category":397,"cover":398,"coverAlt":399,"description":400,"draft":401,"extension":402,"faq":403,"image":419,"keywords":420,"meta":430,"navigation":431,"ogTitle":432,"path":433,"published":434,"seo":435,"stem":436,"tldr":437,"updated":434,"__hash__":441},"blog_it\u002Fblog\u002Fsupabase-storage-backup.md","Supabase storage backup: la copia del database non ha nessun file",{"type":7,"value":8,"toc":385},"minimark",[9,13,21,24,29,45,53,61,65,68,82,88,91,95,98,107,110,116,124,137,141,144,147,166,176,193,206,213,217,220,226,238,243,246,268,274,278,281,287,290,294,318,322,325,330,362,370,377],[10,11,12],"p",{},"Hai impostato i backup per la tua app Lovable o Bolt, o paghi il piano Supabase\nche li esegue, e la parola ha fatto il suo lavoro: hai smesso di preoccuparti.\nPoi un ripristino, o un trasloco in un progetto nuovo, e la app torna con una\nimmagine rotta dove prima c'era ogni foto profilo. Ogni tabella e ogni riga ci\nsono. Le foto no, e con loro ogni fattura, ogni export e ogni allegato che un\nutente abbia mai caricato.",[10,14,15,16,20],{},"Ecco la parte che la parola backup nasconde: ",[17,18,19],"strong",{},"un Supabase storage backup è un\nlavoro a parte, perché un backup del database contiene una riga per ogni file\nche i tuoi utenti hanno caricato e nessuno dei file."," La riga è nel tuo\ndatabase. Il file è in Storage, un servizio separato, e nessuna copia del\ndatabase, su nessun piano, ci entra. Questo articolo spiega come prendere quella\nseconda copia, e in che ordine le due metà tornano indietro, che è la parte che\nva storta anche quando le hai entrambe.",[10,22,23],{},"Aiuta pensare a una biblioteca. Il catalogo è un cassetto di schede, una per\nogni libro, e ciascuna dice su quale scaffale sta il libro. I libri stanno sugli\nscaffali. Un backup del database copia il cassetto.",[25,26,28],"h2",{"id":27},"supabase-fa-il-backup-dei-miei-file-storage","Supabase fa il backup dei miei file Storage?",[10,30,31,32,39,40,44],{},"No, su nessun piano. La\n",[33,34,38],"a",{"href":35,"rel":36},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fplatform\u002Fbackups",[37],"nofollow","documentazione dei backup","\ndi Supabase dice che i backup non contengono i file salvati attraverso la\nStorage API, solo i loro metadati nel database, e il\n",[33,41,43],{"href":42},"\u002Fblog\u002Fsupabase-point-in-time-recovery","point-in-time recovery"," è una funzione\ndel database, quindi la stessa frase copre anche quello.",[10,46,47,48,52],{},"Quello che ogni backup contiene davvero è la lista. Supabase tiene nel tuo\ndatabase Postgres una tabella chiamata ",[49,50,51],"code",{},"storage.objects",", con una riga per file\nin ogni bucket: in quale bucket sta, il suo percorso, chi lo ha caricato, quanto\nè grande e quando è arrivato. Quella tabella viene copiata insieme a tutto il\nresto, ed è esattamente per questo che un progetto ripristinato sembra così\ncompleto. Ogni scheda è nel cassetto.",[10,54,55,56,60],{},"I byte di ogni file stanno da un'altra parte. Vivono nello storage a oggetti,\nun servizio separato accanto al tuo database, e uno strumento che copia un\ndatabase non lo legge mai. Il\n",[33,57,59],{"href":58},"\u002Fblog\u002Fdoes-supabase-back-up-my-database","piano gratuito non esegue alcun backup automatico",",\nquindi lì la domanda nemmeno si pone; da Pro in su la copia giornaliera ha le\ntue righe e nessuno dei tuoi upload.",[25,62,64],{"id":63},"dove-supabase-tiene-i-tuoi-file","Dove Supabase tiene i tuoi file",[10,66,67],{},"In due posti, e un backup del database ne raggiunge uno.",[10,69,70,71,73,74,77,78,81],{},"Quando un utente carica un avatar, la tua app consegna il file a Storage.\nStorage scrive i byte nello storage a oggetti sotto il nome del bucket e il\npercorso, e nella stessa operazione scrive una riga in ",[49,72,51],{}," che lo\ndescrive. La tua app tiene poi quel percorso in una delle sue tabelle, diciamo\nuna riga di ",[49,75,76],{},"profiles"," con una colonna ",[49,79,80],{},"avatar_url",", e ci costruisce un link\nogni volta che serve l'immagine.",[10,83,84,85,87],{},"Quindi una immagine caricata è tre cose: i byte nello storage a oggetti, la riga\nin ",[49,86,51],{}," che Storage mantiene, e il percorso nella tua tabella. Un\nbackup del database porta con sé le ultime due. Ripristinalo e la tua app ha\nogni percorso e Storage ha ogni riga, e il link che costruiscono insieme punta\na un posto dove non c'è niente.",[10,89,90],{},"È anche per questo che il guasto è così silenzioso. Ogni riga concorda con ogni\naltra riga, ogni conteggio torna, e ogni controllo che legge il database passa,\ncompreso il passaggio di verifica della maggior parte degli strumenti di\nbackup, perché i file non sono mai stati dentro la cosa che veniva controllata.",[25,92,94],{"id":93},"come-si-presenta-un-ripristino-con-solo-metà","Come si presenta un ripristino con solo metà",[10,96,97],{},"Un progetto che passa ogni controllo e mostra una immagine rotta ovunque\ndovrebbe comparire un file.",[10,99,100,101,106],{},"Il ripristino riporta un successo perché ha fatto quello che gli era stato\nchiesto: le tabelle sono tornate e i conteggi delle righe corrispondono. Apri la\ndashboard e Storage elenca ogni bucket e ogni file al suo interno, con\ndimensioni e date, perché quella lista viene letta dalla tabella che il\nripristino ha rimesso a posto. La stessa\n",[33,102,105],{"href":103,"rel":104},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fplatform\u002Fmigrating-within-supabase\u002Fdashboard-restore",[37],"guida di Supabase per ripristinare un backup della dashboard in un progetto nuovo","\ndescrive esattamente questo stato: i bucket e i metadati dei file compaiono, e\ngli oggetti dietro di loro no.",[10,108,109],{},"Il modo in cui lo scopri è ordinario. La pagina del team mostra una fila di\nicone di immagine rotta dove c'erano gli avatar. Un cliente risponde alla mail\ncon la fattura del mese scorso per dire che il link apre un errore. Qualcuno\nclicca un file nel browser di Storage e il download fallisce. La scheda dice\nscaffale quattro, terzo da sinistra, e lo scaffale quattro è vuoto.",[111,112],"diagram",{"alt":113,"caption":114,"src":115},"Una copia salvata alimenta un contorno di progetto tratteggiato. Al suo interno, una tabella di tre righe accese è spuntata, e ogni riga è collegata da una linea sottile a una cornice di immagine disegnata tratteggiata e vuota. Le cornici sono barrate.","Il ripristino ha rimesso ogni riga che descrive un file. I file che quelle righe descrivono non sono mai stati nella copia.","\u002Fblog\u002Fsupabase-storage-backup\u002Fthe-list-came-back-1600x620.png",[10,117,118,119,123],{},"Niente ti avverte prima di quel momento, perché ogni avviso che hai è collegato\nal database.\n",[33,120,122],{"href":121},"\u002Fblog\u002Fhow-to-restore-a-supabase-backup","Come ripristinare un backup Supabase","\npassa in rassegna i cinque modi in cui un ripristino torna rotto, e i file sono\nla riga di quella tabella senza rimedio, a meno che tu non ne abbia fatto una\ncopia.",[10,125,126,127,131,132,136],{},"Già che hai aperta la pagina di Storage, vale la pena sapere cosa mostra a uno\nsconosciuto. La nostra scansione gratuita legge la tua app dal vivo, dall'esterno,\ne chiede a ogni bucket la sua lista di file usando nient'altro che la chiave già\npresente nel codice della tua app. Nell'agosto 2026 ha ottenuto una lista da 792\ndelle 27.269 app che ha potuto controllare, una cifra della\n",[33,128,130],{"href":129},"\u002Fresearch\u002Fvibe-coded-app-security-2026","nostra ricerca",". Legge nomi e non\nscarica mai un file, richiede circa 20 secondi e non serve nessun account:\n",[33,133,135],{"href":134},"\u002Fsecurity-scanner","scansiona la tua app",".",[25,138,140],{"id":139},"come-faccio-il-backup-di-un-bucket-supabase-storage","Come faccio il backup di un bucket Supabase Storage?",[10,142,143],{},"Attraverso l'endpoint compatibile S3, con un solo comando che copia un bucket\nintero in una cartella che tieni tu.",[10,145,146],{},"Supabase Storage parla il protocollo S3, il che significa che gli strumenti\nordinari costruiti per lo storage di Amazon funzionano con il tuo. Questo è\nl'unico passaggio di questo articolo che avviene su una riga di comando, e vale\nla pena farlo una volta a mano, così sai di cosa è fatta la copia.",[148,149,150,154,157],"ol",{},[151,152,153],"li",{},"Nella tua dashboard Supabase, apri le impostazioni di Storage e attiva il\nprotocollo S3. La stessa pagina mostra l'URL dell'endpoint e la regione del\ntuo progetto; copiali da lì e non da qui.",[151,155,156],{},"Su quella pagina, crea una coppia di chiavi di accesso S3. Il segreto viene\nmostrato una sola volta, quindi mettilo in un gestore di password prima di\nchiudere la finestra.",[151,158,159,160,165],{},"Installa la ",[33,161,164],{"href":162,"rel":163},"https:\u002F\u002Faws.amazon.com\u002Fcli\u002F",[37],"riga di comando AWS",", dalle le due\nchiavi come profilo, ed esegui una sincronizzazione per bucket:",[167,168,173],"pre",{"className":169,"code":171,"language":172},[170],"language-text","aws s3 sync s3:\u002F\u002Favatars .\u002Fsupabase-files\u002Favatars \\\n  --endpoint-url https:\u002F\u002F\u003Cproject-ref>.storage.supabase.co\u002Fstorage\u002Fv1\u002Fs3 \\\n  --region \u003Cregion>\n","text",[49,174,171],{"__ignoreMap":175},"",[10,177,178,179,182,183,188,189,192],{},"Eseguilo di nuovo domani e copierà solo quello che è cambiato. ",[49,180,181],{},"rclone"," fa lo\nstesso lavoro se lo preferisci; su un bucket grande, la\n",[33,184,187],{"href":185,"rel":186},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Ftroubleshooting\u002Frclone-error-s3-protocol-error-received-listing-v1-with-istruncated-set-no-nextmarker-and-no-contents-e64d34",[37],"nota di risoluzione dei problemi","\ndi Supabase dice di passare ",[49,190,191],{},"--s3-list-version 2",", altrimenti l'elenco può\nfermarsi in anticipo.",[10,194,195,196,201,202,136],{},"Due cose su quella chiave. La\n",[33,197,200],{"href":198,"rel":199},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fstorage\u002Fs3\u002Fauthentication",[37],"pagina di autenticazione S3","\ndi Supabase dice che una chiave di accesso S3 ha accesso completo a ogni bucket\ne aggira Row Level Security, quindi il suo posto è un server o la tua macchina,\ne mai la tua app. E può scrivere oltre che leggere, perché Supabase non emette\nnessuna chiave di sola lettura per Storage; chiunque la tenga può cancellare\nfile con la stessa facilità con cui li copia. Trattala come tratteresti\n",[33,203,205],{"href":204},"\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend","la tua chiave service_role",[10,207,208,209,212],{},"Poi metti la cartella da qualche parte fuori dal tuo account Supabase, per\n",[33,210,211],{"href":58},"la stessa ragione per cui una copia del database dovrebbe vivere fuori",":\nun progetto sospeso o un accesso perduto si porta via ogni copia conservata\ndentro quell'account.",[25,214,216],{"id":215},"prima-i-file-o-prima-le-righe","Prima i file, o prima le righe?",[10,218,219],{},"Prima il database, poi i file, e i file tornano attraverso Storage in modo che\nsia Storage a scrivere le righe.",[10,221,222,223,225],{},"Ogni upload che passa da Storage, dalla tua app, dall'endpoint S3 o dalla CLI\ndi Supabase, fa due cose in una sola operazione: salva i byte e scrive la riga\ndi ",[49,224,51],{}," che li descrive. Il libro viene messo sullo scaffale e la\nscheda la scrive la stessa mano. Rimetti i file per quella strada e le righe\narrivano con loro, e le due cose non possono divergere.",[10,227,228,229,231,232,237],{},"L'altra direzione non ha nessun meccanismo del genere. Ricopiare le righe di\n",[49,230,51],{}," con uno strumento per database scrive schede e non mette\nniente sugli scaffali. Complica anche il passaggio successivo: per impostazione\npredefinita Storage rifiuta un upload verso un percorso che ha già una riga,\ncon un errore che dice che la risorsa esiste già, e la\n",[33,233,236],{"href":234,"rel":235},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fstorage\u002Fuploads",[37],"guida agli upload"," di\nSupabase dice che lo si supera attivando la sovrascrittura. Quindi quando il\nripristino del database ha già riportato le righe, che è quello che la stessa\nguida di migrazione di Supabase ti fa fare, la copia dei file che segue deve\npoter sovrascrivere.",[111,239],{"alt":240,"caption":241,"src":242},"Due corsie. In quella in alto, una copia salvata entra direttamente in un database e accende tre righe, mentre un contenitore disegnato sotto la freccia resta tratteggiato e vuoto, e la corsia è barrata. In quella in basso, tre immagini entrano prima nel contenitore, una freccia prosegue dal contenitore al database, e le stesse tre righe si accendono man mano che le immagini arrivano. La corsia in basso è spuntata.","Un file che arriva attraverso Storage scrive la propria riga. Una riga che arriva attraverso il database non porta nessun file con sé.","\u002Fblog\u002Fsupabase-storage-backup\u002Fthrough-storage-or-around-it-1600x620.png",[10,244,245],{},"L'ordine, quindi:",[148,247,248,254,265],{},[151,249,250,251,136],{},"Ripristina il database, come descrive\n",[33,252,253],{"href":121},"quell'articolo",[151,255,256,257,260,261,264],{},"Ricopia i file attraverso Storage, con ",[49,258,259],{},"aws s3 sync"," eseguito al contrario\n(prima la cartella, poi il bucket) o con ",[49,262,263],{},"supabase storage cp -r",", e con la\nsovrascrittura attiva. Un bucket che non esiste più va creato prima, con lo\nstesso nome e la stessa impostazione pubblica.",[151,266,267],{},"Apri un file, e poi parecchi altri.",[10,269,270,271,273],{},"La versione più pulita di tutto questo salta del tutto la riproduzione di\n",[49,272,51],{}," nel passaggio del database e lascia che gli upload scrivano\nogni riga da zero, così non c'è mai niente da sovrascrivere. È così che fa il\nnostro ripristino. Richiede di filtrare la copia prima di riprodurla, che è un\npassaggio per lo strumento che esegue il ripristino.",[25,275,277],{"id":276},"come-verificare-di-avere-entrambe-le-cose","Come verificare di avere entrambe le cose",[10,279,280],{},"Aprendo file, perché ogni lista che puoi tirare fuori viene letta dalla\ntabella.",[10,282,283,284,286],{},"Il browser dei file della dashboard, una query su ",[49,285,51],{}," e il\nconteggio delle righe in un report di backup descrivono tutti il cassetto, e\ndopo un ripristino del solo database il cassetto è perfetto. L'unica richiesta\nche tocca lo scaffale è una richiesta del file stesso.",[10,288,289],{},"Quindi dopo un ripristino, e dopo la prima copia che fai, apri dei file.\nPrendine una manciata da ogni bucket, compresi i più vecchi, e aprili\nattraverso la app come farebbe un utente. Un file che si apre è tornato. Un\nfile che dà errore non c'è mai stato, qualunque cosa dica la lista.",[25,291,293],{"id":292},"cosa-fare-questa-settimana","Cosa fare questa settimana",[295,296,297],"key-takeaways",{},[298,299,300,303,309,312,315],"ul",{},[151,301,302],{},"Apri Storage nella tua dashboard Supabase e annota ogni bucket e, a grandi linee, cosa contiene. Tutto quello che un utente ha caricato vive lì e in nessun backup del database.",[151,304,305,306,308],{},"Attiva il protocollo S3, crea una chiave di accesso ed esegui un ",[49,307,259],{}," per bucket verso una cartella fuori dal tuo account Supabase. Tieni il segreto in un gestore di password; può cancellare con la stessa facilità con cui copia.",[151,310,311],{},"Esegui di nuovo la sincronizzazione con una cadenza che rispetterai, che sia un promemoria sul calendario o un job su un server.",[151,313,314],{},"Scrivi l'ordine di ripristino da qualche parte dove lo ritroverai: prima il database, poi i file attraverso Storage con la sovrascrittura attiva.",[151,316,317],{},"Ripristina una volta in un progetto usa e getta e apri dieci file, così la prima volta che scopri se la copia funziona non è durante un blackout.",[25,319,321],{"id":320},"dove-si-colloca-reeve-care","Dove si colloca Reeve Care",[10,323,324],{},"Care copia i file insieme al database, nell'ordine che questo articolo descrive,\ne li rimette a posto allo stesso modo.",[111,326],{"alt":327,"caption":328,"src":329},"Un pannello Reeve Care con due righe. Nella prima, un database e una immagine stanno dentro un contorno di account tratteggiato. Il database ne esce come file salvato, chiuso con un lucchetto, riletto attraverso una lente e spuntato, numerato uno, e solo allora l'immagine ne esce come secondo file salvato, numerato due. Nella seconda riga, una scheda con un pulsante rimanda una copia dentro l'account, numerata uno, e una seconda copia lungo una freccia che passa attraverso un contenitore lungo la strada, numerata due.","La copia del database viene riletta e passa prima che i file vengano copiati. Sulla via del ritorno il database va per primo, e i file tornano attraverso Storage.","\u002Fblog\u002Fsupabase-storage-backup\u002Fcare-database-then-files-1600x560.png",[298,331,332,338,344,350,356],{},[151,333,334,337],{},[17,335,336],{},"Anche i file caricati dai tuoi utenti vengono copiati",", non appena colleghi i bucket Storage della tua app Supabase. È una seconda chiave, chiesta a parte, perché la chiave che Supabase emette per Storage può scrivere oltre che leggere, e preferiamo chiederla piuttosto che fonderla con la chiave del database, che non può.",[151,339,340,343],{},[17,341,342],{},"La copia dei file parte dopo che la copia del database è stata riletta e verificata",", mai in parallelo, così un punto di ripristino non rivendica mai file che non ha copiato. Una copia rimasta senza tempo viene segnata come parziale, con i conteggi reali.",[151,345,346,349],{},[17,347,348],{},"Ogni punto di ripristino registra quale percorso conteneva quale file."," Un database riportato a martedì riceve i file di martedì, e un file ancora al suo posto viene lasciato in pace.",[151,351,352,355],{},[17,353,354],{},"Il ripristino rimette i file attraverso Storage",", così ogni riga viene scritta dall'upload che porta il file. Niente di ciò che esiste oggi viene sovrascritto o cancellato, il che significa che premere il pulsante nel panico non può distruggere la cosa che stavi cercando di salvare.",[151,357,358,361],{},[17,359,360],{},"Il ripristino è un pulsante",", e scatta una istantanea dello stato attuale prima di partire, così il ripristino stesso ha un annulla.",[10,363,364,365,369],{},"Care parte da €49 al mese per una app. È un prezzo di listino, e la\n",[33,366,368],{"href":367},"\u002Fpricing","pagina dei prezzi"," a volte sta sotto la cifra qui e mai sopra.",[10,371,372,373,136],{},"Come una copia viene fatta, controllata e rimessa a posto, file compresi, è\ndisegnato passo per passo sulla\n",[33,374,376],{"href":375},"\u002Fsupabase-backups","pagina dei backup Supabase",[10,378,379,380,384],{},"Prima di chiudere questa scheda, apri Storage nella tua dashboard e conta i\nbucket. Ognuno è un insieme di file che nessun backup eseguito da Supabase\nconterrà mai, e il comando di sincronizzazione qui sopra è tutto quello che\nserve per cambiare le cose. Se un bucket è risultato anche elencabile,\n",[33,381,383],{"href":382},"\u002Fblog\u002Fsupabase-storage-bucket-public","cosa ottiene uno sconosciuto da quella lista","\nè la prossima cosa da leggere.",{"title":175,"searchDepth":386,"depth":386,"links":387},3,[388,390,391,392,393,394,395,396],{"id":27,"depth":389,"text":28},2,{"id":63,"depth":389,"text":64},{"id":93,"depth":389,"text":94},{"id":139,"depth":389,"text":140},{"id":215,"depth":389,"text":216},{"id":276,"depth":389,"text":277},{"id":292,"depth":389,"text":293},{"id":320,"depth":389,"text":321},"Backups","\u002Fblog\u002Fsupabase-storage-backup\u002Fcover-1200x630.png","Un database con tre righe, ciascuna collegata da una linea sottile a una immagine posata in un vassoio separato accanto.","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.",false,"md",[404,407,410,413,416],{"q":405,"a":406},"Supabase fa il backup dei miei bucket Storage?","No. Supabase lo scrive sulla sua stessa pagina dei backup: i backup del database non contengono i file salvati attraverso la Storage API, solo le righe del database che li descrivono. Vale per i backup giornalieri dei piani a pagamento e per il point-in-time recovery. Il piano gratuito non esegue alcun backup automatico, quindi lì la domanda non si pone. I tuoi file hanno bisogno di una copia tutta loro, su ogni piano.",{"q":408,"a":409},"Il point-in-time recovery copre Supabase Storage?","No. Il point-in-time recovery riavvolge il database, e Storage è un servizio separato di cui il database conserva solo i percorsi. Un progetto riavvolto a martedì punta a quello che c'è nei bucket oggi, e un file cancellato mercoledì resta cancellato dopo un recupero riuscito alla perfezione.",{"q":411,"a":412},"Come scarico tutti i file di un bucket Supabase?","Attraverso l'endpoint compatibile S3. Attiva il protocollo S3 nelle impostazioni Storage della tua dashboard, crea una coppia di chiavi di accesso e punta la riga di comando AWS o rclone all'endpoint e alla regione stampati sulla stessa pagina. Un solo comando di sincronizzazione copia un bucket intero in una cartella che tieni tu. La dashboard scarica un file alla volta, che va bene per un logo e non porta da nessuna parte con un bucket.",{"q":414,"a":415},"Che cos'è storage.objects?","Una tabella del tuo database Postgres con una riga per ogni file di ogni bucket: in quale bucket sta, il suo percorso, chi lo ha caricato, dimensione e tipo, e quando è arrivato. È l'indice. I byte del file non ci sono, ed è per questo che un backup del database può elencare ogni file che hai senza contenerne nessuno.",{"q":417,"a":418},"Se ripristino il database, i miei file tornano?","No. Il ripristino riporta le righe di storage.objects, quindi la dashboard elenca ogni file e la tua app disegna ogni link, e ognuno apre un errore perché il file dietro non è mai stato nella copia. I file vanno rimessi a parte, attraverso Storage, da una copia che ne hai fatto tu.","\u002Fblog\u002Fsupabase-storage-backup\u002Fcard-800x500.png",[421,422,423,424,425,426,427,428,429],"supabase storage backup","backup bucket supabase storage","supabase fa il backup dello storage","supabase storage objects backup","backup file supabase","ripristinare supabase storage","supabase s3 storage backup","scaricare tutti i file di un bucket supabase","supabase storage disaster recovery",{},true,"Supabase storage backup: la tua copia non ha nessun file","\u002Fblog\u002Fsupabase-storage-backup","2026-09-14",{"title":5,"description":400},"blog\u002Fsupabase-storage-backup",[438,439,440],"Un Supabase storage backup è un lavoro separato dal backup del database. Ogni backup che Supabase esegue, su ogni piano, contiene la riga che descrive ciascun file caricato e nessuno dei file veri e propri.","Ripristina il database da solo e ottieni una app che funziona, in cui ogni avatar, fattura e upload apre un errore, perché il file a cui punta non è mai stato nella copia.","L'endpoint compatibile S3 è il modo per copiare i file fuori. La strada del ritorno passa da Storage stesso, che scrive la riga corrispondente man mano che ogni file arriva, così la lista e i file non possono divergere.","RR3mNO3y2QXNAf86BBEli7cQrBixZUC-jOeKrB1MGS4",[443,450,456,462,468,474,480,486,492,498,504,510,516,522,528,534,539,545,551,557,563,569,575,581,587,593,599,605,606,611,617,623,629,635,641,647,653,659,665,671,677,683,689,695,701,707,713,719,725,730,735,741,747,753,758,764,769,775,780,786],{"path":444,"title":445,"description":446,"published":447,"category":448,"image":449,"draft":401},"\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","Basi della sicurezza","\u002Fblog\u002Fbase44-security-scan\u002Fcard-800x500.png",{"path":451,"title":452,"description":453,"published":454,"category":448,"image":455,"draft":401},"\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":457,"title":458,"description":459,"published":460,"category":448,"image":461,"draft":401},"\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":463,"title":464,"description":465,"published":466,"category":448,"image":467,"draft":401},"\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":469,"title":470,"description":471,"published":472,"category":448,"image":473,"draft":401},"\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":475,"title":476,"description":477,"published":478,"category":448,"image":479,"draft":401},"\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":481,"title":482,"description":483,"published":484,"category":448,"image":485,"draft":401},"\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":487,"title":488,"description":489,"published":490,"category":448,"image":491,"draft":401},"\u002Fblog\u002Fis-v0-safe","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.","2026-10-03","\u002Fblog\u002Fis-v0-safe\u002Fcard-800x500.png",{"path":493,"title":494,"description":495,"published":496,"category":448,"image":497,"draft":401},"\u002Fblog\u002Fis-bolt-safe","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":499,"title":500,"description":501,"published":502,"category":448,"image":503,"draft":401},"\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":505,"title":506,"description":507,"published":508,"category":448,"image":509,"draft":401},"\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":511,"title":512,"description":513,"published":514,"category":448,"image":515,"draft":401},"\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":517,"title":518,"description":519,"published":520,"category":397,"image":521,"draft":401},"\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","\u002Fblog\u002Ftest-your-supabase-backup\u002Fcard-800x500.png",{"path":523,"title":524,"description":525,"published":526,"category":397,"image":527,"draft":401},"\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":529,"title":530,"description":531,"published":532,"category":397,"image":533,"draft":401},"\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":535,"title":536,"description":537,"published":532,"category":448,"image":538,"draft":401},"\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":540,"title":541,"description":542,"published":543,"category":448,"image":544,"draft":401},"\u002Fblog\u002Fopen-api-endpoint-exposed","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":546,"title":547,"description":548,"published":549,"category":448,"image":550,"draft":401},"\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":552,"title":553,"description":554,"published":555,"category":397,"image":556,"draft":401},"\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":558,"title":559,"description":560,"published":561,"category":448,"image":562,"draft":401},"\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":564,"title":565,"description":566,"published":567,"category":448,"image":568,"draft":401},"\u002Fblog\u002Fis-lovable-safe","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":570,"title":571,"description":572,"published":573,"category":448,"image":574,"draft":401},"\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":576,"title":577,"description":578,"published":579,"category":448,"image":580,"draft":401},"\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":582,"title":583,"description":584,"published":585,"category":448,"image":586,"draft":401},"\u002Fblog\u002Fvite-and-next-public-env-vars","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":588,"title":589,"description":590,"published":591,"category":448,"image":592,"draft":401},"\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":594,"title":595,"description":596,"published":597,"category":448,"image":598,"draft":401},"\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":600,"title":601,"description":602,"published":603,"category":448,"image":604,"draft":401},"\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":433,"title":5,"description":400,"published":434,"category":397,"image":419,"draft":401},{"path":42,"title":607,"description":608,"published":609,"category":397,"image":610,"draft":401},"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":612,"title":613,"description":614,"published":615,"category":397,"image":616,"draft":401},"\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":618,"title":619,"description":620,"published":621,"category":448,"image":622,"draft":401},"\u002Fblog\u002Fsafest-ai-app-builder","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":624,"title":625,"description":626,"published":627,"category":448,"image":628,"draft":401},"\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":630,"title":631,"description":632,"published":633,"category":448,"image":634,"draft":401},"\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":636,"title":637,"description":638,"published":639,"category":448,"image":640,"draft":401},"\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":642,"title":643,"description":644,"published":645,"category":448,"image":646,"draft":401},"\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":648,"title":649,"description":650,"published":651,"category":448,"image":652,"draft":401},"\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":654,"title":655,"description":656,"published":657,"category":448,"image":658,"draft":401},"\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":660,"title":661,"description":662,"published":663,"category":448,"image":664,"draft":401},"\u002Fblog\u002Fmissing-security-headers","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":666,"title":667,"description":668,"published":669,"category":448,"image":670,"draft":401},"\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":672,"title":673,"description":674,"published":675,"category":448,"image":676,"draft":401},"\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":678,"title":679,"description":680,"published":681,"category":397,"image":682,"draft":401},"\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":684,"title":685,"description":686,"published":687,"category":448,"image":688,"draft":401},"\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":690,"title":691,"description":692,"published":693,"category":397,"image":694,"draft":401},"\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":696,"title":697,"description":698,"published":699,"category":448,"image":700,"draft":401},"\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":702,"title":703,"description":704,"published":705,"category":448,"image":706,"draft":401},"\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":708,"title":709,"description":710,"published":711,"category":448,"image":712,"draft":401},"\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":714,"title":715,"description":716,"published":717,"category":448,"image":718,"draft":401},"\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":720,"title":721,"description":722,"published":723,"category":397,"image":724,"draft":401},"\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":121,"title":726,"description":727,"published":728,"category":397,"image":729,"draft":401},"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":382,"title":731,"description":732,"published":733,"category":448,"image":734,"draft":401},"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":736,"title":737,"description":738,"published":739,"category":448,"image":740,"draft":401},"\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":742,"title":743,"description":744,"published":745,"category":397,"image":746,"draft":401},"\u002Fblog\u002Fai-agent-deleted-my-database","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":748,"title":749,"description":750,"published":751,"category":448,"image":752,"draft":401},"\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":754,"title":755,"description":756,"published":751,"category":448,"image":757,"draft":401},"\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":759,"title":760,"description":761,"published":762,"category":448,"image":763,"draft":401},"\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":58,"title":765,"description":766,"published":767,"category":397,"image":768,"draft":401},"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":770,"title":771,"description":772,"published":773,"category":448,"image":774,"draft":401},"\u002Fblog\u002Fsupabase-rls-on-but-table-still-public","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":776,"title":777,"description":778,"published":773,"category":397,"image":779,"draft":401},"\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":781,"title":782,"description":783,"published":784,"category":397,"image":785,"draft":401},"\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":204,"title":787,"description":788,"published":784,"category":448,"image":789,"draft":401},"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",1791618973759]