[{"data":1,"prerenderedAt":653},["ShallowReactive",2],{"blog-it-is-supabase-secure":3,"blog-index-it":411},{"id":4,"title":5,"body":6,"category":367,"cover":368,"coverAlt":369,"description":370,"draft":371,"extension":372,"faq":373,"image":391,"keywords":392,"meta":400,"navigation":401,"ogTitle":25,"path":402,"published":403,"seo":404,"stem":405,"tldr":406,"updated":403,"__hash__":410},"blog_it\u002Fblog\u002Fis-supabase-secure.md","Supabase è sicuro? Sì. Il tuo progetto è un'altra questione",{"type":7,"value":8,"toc":355},"minimark",[9,13,21,26,29,40,43,46,50,53,59,68,71,77,80,84,87,90,93,101,108,112,115,235,238,242,245,251,262,272,277,287,291,313,325,332,336,339,342,345,348],[10,11,12],"p",{},"Qualcuno ti ha detto che Supabase non va bene per dati veri degli utenti.\nQualcun altro ti ha detto che ci girano metà delle app di cui hai sentito\nparlare quest'anno. Erano sicuri entrambi, e nessuno dei due aveva aperto la tua\napp.",[10,14,15,16,20],{},"Ecco la parte che guida dopo guida sbaglia: ",[17,18,19],"strong",{},"\"Supabase è sicuro\" e \"il mio\nprogetto Supabase è sicuro\" hanno due risposte date da due persone diverse.","\nSupabase risponde alla prima, e risponde bene. La seconda è tua, che qualcuno ti\nabbia detto o no che ti era stata passata.",[22,23,25],"h2",{"id":24},"supabase-è-sicuro","Supabase è sicuro?",[10,27,28],{},"Sì. Revisori esterni hanno esaminato la piattaforma, e le sue certificazioni\nsono agli atti.",[10,30,31,32,39],{},"Supabase è conforme SOC 2 Type 2 e certificato ISO 27001. I dati dei clienti\nsono cifrati a riposo con AES-256 e in transito con TLS. Esiste un'offerta HIPAA\nper i dati sanitari, che richiede un componente aggiuntivo e un accordo firmato.\nFanno penetration test regolari con esperti esterni, e pubblicano tutto sulla\n",[33,34,38],"a",{"href":35,"rel":36},"https:\u002F\u002Fsupabase.com\u002Fsecurity",[37],"nofollow","loro pagina sulla sicurezza",".",[10,41,42],{},"Pensalo come un palazzo. Le fondamenta reggono, le porte tagliafuoco\nfunzionano, all'ingresso c'è un portiere, e al muro c'è un certificato di\nqualcuno che è venuto a controllare. È davvero quello che stai comprando.",[10,44,45],{},"Il tuo progetto è un appartamento dentro quel palazzo.",[22,47,49],{"id":48},"che-cosa-copre-davvero-quel-certificato","Che cosa copre davvero quel certificato?",[10,51,52],{},"Il palazzo. Supabase mette per iscritto il confine in una sola frase, nella sua\ndocumentazione SOC 2:",[54,55,56],"blockquote",{},[10,57,58],{},"La conformità SOC 2 di Supabase non si trasferisce ad ambienti fuori dal\nprodotto Supabase o dal controllo di Supabase.",[10,60,61,62,67],{},"La stessa pagina aggiunge che i dati sul lato cliente di quel confine sono\nresponsabilità del cliente, e il loro\n",[33,63,66],{"href":64,"rel":65},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fdeployment\u002Fshared-responsibility-model",[37],"modello di responsabilità condivisa","\nstabilisce quale lato è quale. Supabase gestisce l'infrastruttura, il sistema\noperativo, gli aggiornamenti di Postgres e il monitoraggio della piattaforma.\nDalla tua parte stanno il tuo account e chi vi accede, i tuoi dati, i segreti\ndel tuo database e le chiavi API, e Row Level Security, che quella pagina ti\nconsiglia di applicare sempre.",[10,69,70],{},"Quest'ultimo punto è tutto questo articolo. Row Level Security è la regola su\nogni tabella che dice chi può leggere quali righe. Resta spenta finché qualcuno\nnon la accende, e si accende dentro il tuo progetto, su una pagina che forse non\nhai mai aperto.",[72,73],"diagram",{"alt":74,"caption":75,"src":76},"Due recinti, uno dentro l'altro. Il muro esterno è pieno, spuntato, e porta una targa SOC 2; una richiesta passa dal suo cancello sorvegliato. Il muro interno, etichettato RLS, ha un varco, e la richiesta prosegue per quel varco fino a una pila di righe di database.","Il muro esterno è ispezionato e certificato. La richiesta che arriva alle tue righe è passata da un varco nel muro interno, quello che disegna il tuo progetto.","\u002Fblog\u002Fis-supabase-secure\u002Fwhere-the-certificate-stops-1600x760.png",[10,78,79],{},"Il certificato riguarda il palazzo. L'unica cosa che la piattaforma fa con gli\nappartamenti è indicare le porte: il Security Advisor nella tua dashboard nomina\nogni tabella con la regola spenta, e lascia la decisione a te.",[22,81,83],{"id":82},"allora-perché-tante-app-supabase-lasciano-uscire-dati","Allora perché tante app Supabase lasciano uscire dati?",[10,85,86],{},"Perché tutto quello che sta dalla tua parte di quella linea continua a\nfunzionare benissimo mentre è spalancato.",[10,88,89],{},"Ad agosto 2026 abbiamo scansionato 30.998 app dal vivo costruite con Lovable,\nBase44, Replit, v0 e Bolt. In 3.680 di queste siamo riusciti a portare a termine\nil controllo che chiede a un database, senza alcun login, se consegnerà delle\nrighe. 2.096 hanno detto sì su almeno una tabella. Storage raccontava la stessa\nstoria da un'altra angolazione: delle 27.269 app che siamo riusciti a\ncontrollare, 792 avevano un bucket che uno sconosciuto poteva elencare.",[10,91,92],{},"Niente di tutto questo è stato un cedimento di Supabase. Ognuna di quelle\nrisposte veniva da un database aggiornato e cifrato su una piattaforma\ncertificata, che faceva esattamente ciò che il suo progetto gli aveva detto di\nfare. Il palazzo stava bene. Le porte al suo interno erano aperte.",[10,94,95,96,100],{},"Succede per l'ordine in cui si costruiscono le cose. La tua app funziona dal\nprimo giorno, e funziona che le regole siano scritte o no, quindi non c'è un\nmomento in cui qualcosa si rompe e ti spinge a guardare. La\n",[33,97,99],{"href":98},"\u002Fblog\u002Fcan-anyone-read-your-supabase-database","misurazione completa"," spiega\nquanto di tutto ciò siamo riusciti a vedere e quanto no.",[10,102,103,104,39],{},"Se vuoi la risposta per la tua app invece che per la piattaforma, la nostra\nscansione gratuita fa la stessa richiesta anonima dall'esterno e ti dice quali\ndelle tue tabelle hanno risposto. Una ventina di secondi, senza account:\n",[33,105,107],{"href":106},"\u002F#scan","scansiona la tua app",[22,109,111],{"id":110},"supabase-va-bene-per-la-produzione","Supabase va bene per la produzione?",[10,113,114],{},"Sì, e quello che devi farci tu è poco, perché Supabase ha già fatto la metà\nlunga.",[116,117,118,134],"table",{},[119,120,121],"thead",{},[122,123,124,128,131],"tr",{},[125,126,127],"th",{},"Questione",[125,129,130],{},"Chi se ne occupa",[125,132,133],{},"Che cosa significa per te",[135,136,137,149,158,167,177,190,211,223],"tbody",{},[122,138,139,143,146],{},[140,141,142],"td",{},"Patch dei server, aggiornamenti Postgres, sistema",[140,144,145],{},"Supabase",[140,147,148],{},"Niente da fare",[122,150,151,154,156],{},[140,152,153],{},"Cifratura a riposo e in transito",[140,155,145],{},[140,157,148],{},[122,159,160,163,165],{},[140,161,162],{},"Sicurezza fisica, sicurezza di rete, pentest",[140,164,145],{},[140,166,148],{},[122,168,169,172,174],{},[140,170,171],{},"Backup del tuo database",[140,173,145],{},[140,175,176],{},"Giornalieri sui piani a pagamento, assenti su quello gratuito. Guarda quale hai",[122,178,179,182,187],{},[140,180,181],{},"Quali righe un visitatore può leggere",[140,183,184],{},[17,185,186],{},"Tu",[140,188,189],{},"Una policy Row Level Security su ogni tabella con dati veri",[122,191,192,195,199],{},[140,193,194],{},"Quale chiave è finita nella tua app",[140,196,197],{},[17,198,186],{},[140,200,201,202,206,207,210],{},"La chiave pubblicabile ci sta. ",[203,204,205],"code",{},"service_role"," e ",[203,208,209],{},"sb_secret_"," mai",[122,212,213,216,220],{},[140,214,215],{},"Quali file uno sconosciuto può elencare",[140,217,218],{},[17,219,186],{},[140,221,222],{},"L'interruttore pubblico di ogni bucket, separato dalle regole delle tabelle",[122,224,225,228,232],{},[140,226,227],{},"Chi può entrare nel tuo account Supabase",[140,229,230],{},[17,231,186],{},[140,233,234],{},"Una password che non ha nessun altro, e il secondo fattore sull'account",[10,236,237],{},"Ogni riga della metà bassa è un'impostazione, e ogni impostazione sono pochi\nminuti in una dashboard. La piattaforma arriva pronta per la produzione. La\nconfigurazione arriva nello stato in cui l'ha lasciata il tuo builder.",[22,239,241],{"id":240},"come-controllo-il-mio-progetto","Come controllo il mio progetto?",[10,243,244],{},"Tre posti, e nessuno ti chiede di leggere una riga di SQL.",[10,246,247,250],{},[17,248,249],{},"Apri il Security Advisor nella tua dashboard Supabase."," Elenca ogni tabella\ncon Row Level Security spento, che è la versione più grossolana del problema, e\nSupabase è bravo a segnalarlo. Un progetto con quella lista vuota ha chiuso la\nprima domanda.",[10,252,253,256,257,261],{},[17,254,255],{},"Poi leggi la policy su ogni tabella che contiene persone."," L'Advisor non può\ndecidere se una policy permissiva fosse voluta, perché su un catalogo prodotti\nsarebbe corretta. Una tabella può avere l'interruttore acceso, una policy valida\ne una spunta verde nella dashboard, e consegnare comunque le sue righe a\nchiunque chieda;\n",[33,258,260],{"href":259},"\u002Fblog\u002Fsupabase-rls-on-but-table-still-public","i quattro stati in cui può trovarsi una tabella","\nspiegano come riconoscere il tuo.",[10,263,264,267,268,39],{},[17,265,266],{},"Poi guarda Storage."," I bucket hanno impostazioni proprie e le regole delle\ntue tabelle non arrivano fin lì, quindi un database ben chiuso non ti dice\nniente su\n",[33,269,271],{"href":270},"\u002Fblog\u002Fsupabase-storage-bucket-public","i file che i tuoi utenti hanno caricato",[72,273],{"alt":274,"caption":275,"src":276},"Un grosso muro esterno con una targa SOC 2 spuntata attraversa lo sfondo. Davanti sta un recinto più piccolo con tre porte, ognuna etichettata in carattere a spaziatura fissa: RLS, public e service_role.","Il muro dietro lo ispeziona qualcun altro. Queste tre maniglie stanno dentro il tuo progetto, e ognuna è una pagina della tua dashboard.","\u002Fblog\u002Fis-supabase-secure\u002Fthree-doors-you-own-1600x700.png",[10,278,279,280,284,285,39],{},"C'è una quarta domanda a cui la dashboard non può rispondere: quale chiave è\ndavvero finita nella tua app. La pagina delle impostazioni elenca le chiavi che\nil tuo progetto possiede, e la tua app è l'unico posto che registra quale di\nesse ci è entrata. Leggere la chiave sulla tua pagina dal vivo è\n",[33,281,283],{"href":282},"\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend","roba da due minuti",", oppure la\nnostra scansione gratuita la legge per te insieme a tutto il resto:\n",[33,286,107],{"href":106},[22,288,290],{"id":289},"cosa-fare-adesso","Cosa fare adesso",[292,293,294],"key-takeaways",{},[295,296,297,301,304,307,310],"ul",{},[298,299,300],"li",{},"Smetti di chiederti se Supabase è sicuro. Lo è, con un report SOC 2 Type 2, ISO 27001, cifratura AES-256 a riposo e penetration test regolari dietro l'affermazione.",[298,302,303],{},"Leggi il confine con le loro parole. La conformità copre il prodotto Supabase, e le tue policy Row Level Security, le tue chiavi e i tuoi bucket stanno dalla tua parte.",[298,305,306],{},"Apri prima il Security Advisor. Costa un minuto e risponde alla versione più grossolana della domanda.",[298,308,309],{},"Leggi la policy su ogni tabella che contiene persone, perché una policy permissiva nella dashboard si vede come una tabella protetta.",[298,311,312],{},"Controlla Storage separatamente dalle tue tabelle. I due hanno impostazioni diverse e un database severo non dice niente sui tuoi file.",[10,314,315,316,320,321,39],{},"Se preferisci passare tutto in rassegna come lista, la\n",[33,317,319],{"href":318},"\u002Fchecklist","checklist di sicurezza da 10 minuti"," copre questo insieme alle\naltre impostazioni da chiudere in un'app appena lanciata, e c'è una spiegazione\nin parole semplici per ",[33,322,324],{"href":323},"\u002Fis-your-supabase-app-safe","le app Supabase",[10,326,327,328,39],{},"Passare quella lista è una serata, e la risposta che ti dà è vera la sera in cui\nlo fai. Tenerla vera è la parte che in una serata non ci sta, ed è per questo\nche abbiamo costruito Reeve Care: rifà quegli stessi controlli sulla tua app\nsecondo un calendario e ti scrive quando uno di loro comincia a rispondere\ndiversamente. ",[33,329,331],{"href":330},"\u002F#pricing","Cosa sorveglia e quanto costa",[22,333,335],{"id":334},"reeve-tiene-una-copia-del-tuo-database-supabase","Reeve tiene una copia del tuo database Supabase",[10,337,338],{},"Fuori dall'account da cui viene, secondo un calendario, e verificata prima di\ncontare. La prima delle tre è quella che i backup di Supabase non possono fare\nper te.",[10,340,341],{},"Supabase prende una copia giornaliera sui piani a pagamento e nessuna su quello\ngratuito, e in entrambi i casi quella copia vive dentro il progetto da cui è\nstata presa. È lo strumento giusto per il pomeriggio in cui rompi i tuoi stessi\ndati. È fuori portata il giorno in cui il problema è l'account: un pagamento\nsaltato, una cancellazione, un accesso in cui non entra più nessuno.",[10,343,344],{},"Reeve Care tiene una copia da un'altra parte. Presa secondo il calendario che\nfissa il tuo piano, cifrata prima di lasciare la macchina che l'ha prodotta, e\nriletta e controllata prima che la contiamo come backup, così la data sulla tua\ndashboard è la data in cui una copia è stata dimostrata esistente e non la data\nin cui è partito un lavoro. Copre il tuo database Supabase, e i file caricati\ndai tuoi utenti appena li colleghi.",[10,346,347],{},"Un ripristino fa tre cose attorno al riversamento vero e proprio. Controlla che\nla copia stia ancora nel tuo database prima di rimettere una sola riga, prende\nprima un'istantanea di sicurezza di quello che c'è adesso, e dopo dimostra che\nil database accetta scritture scrivendoci, perché un ripristino che ti lascia in\nsola lettura non ha finito. Puoi anche scaricare qualunque copia teniamo e\nandartene con quella.",[10,349,350,351,39],{},"Ogni controllo di questa pagina ti dice dove sta la tua app oggi. I backup sono\nper il giorno in cui qualcosa è già andato storto.\n",[33,352,354],{"href":353},"\u002Fsupabase-backups","Cosa salva Reeve su Supabase, con che frequenza, e cosa fa un ripristino",{"title":356,"searchDepth":357,"depth":357,"links":358},"",3,[359,361,362,363,364,365,366],{"id":24,"depth":360,"text":25},2,{"id":48,"depth":360,"text":49},{"id":82,"depth":360,"text":83},{"id":110,"depth":360,"text":111},{"id":240,"depth":360,"text":241},{"id":289,"depth":360,"text":290},{"id":334,"depth":360,"text":335},"Basi della sicurezza","\u002Fblog\u002Fis-supabase-secure\u002Fcover-1200x630.png","Un edificio dalle finestre illuminate con un'anta aperta a un piano alto, che lascia un vuoto scuro in una facciata per il resto chiusa.","Supabase è sicuro? La piattaforma è certificata, cifrata e sottoposta a pentest. La loro documentazione dice dove finisce quello e iniziano le tue impostazioni.",false,"md",[374,377,380,383,385,388],{"q":375,"a":376},"Supabase è abbastanza sicuro per dati reali dei clienti?","Sì. Supabase è conforme SOC 2 Type 2 e certificato ISO 27001, cifra i dati dei clienti a riposo con AES-256 e in transito con TLS, e fa penetration test regolari. Quello che non ti dice è se le regole dentro il tuo progetto lasciano che uno sconosciuto legga le tue tabelle, perché quell'impostazione appartiene al tuo progetto e non alla piattaforma.",{"q":378,"a":379},"Supabase è conforme SOC 2?","Sì, SOC 2 Type 2. I clienti Enterprise e Team possono richiedere il report dalla loro dashboard. Il perimetro è il prodotto Supabase stesso: la loro infrastruttura, i loro controlli, il loro monitoraggio.",{"q":381,"a":382},"Il report SOC 2 di Supabase copre la mia app?","No, e Supabase lo scrive nero su bianco. La loro documentazione SOC 2 afferma che la conformità non si trasferisce ad ambienti fuori dal prodotto Supabase o fuori dal controllo di Supabase, e che i dati sul lato cliente di quel confine sono responsabilità del cliente. Le tue policy Row Level Security, le tue chiavi API e le tue impostazioni Storage stanno tutte dalla tua parte.",{"q":111,"a":384},"Sì, e il lavoro dalla tua parte è corto. Attiva Row Level Security su ogni tabella con dati veri e scrivi una policy che nomini una condizione, tieni la chiave segreta fuori da tutto ciò che i tuoi visitatori scaricano, e guarda quali bucket Storage sono segnati come pubblici. Sono quelle tre impostazioni a decidere se uno sconosciuto arriva ai tuoi dati, ed è da lì che partiamo quando scansioniamo un'app.",{"q":386,"a":387},"Supabase è conforme HIPAA?","Supabase offre la conformità HIPAA, e non arriva da sola. Richiede il componente aggiuntivo HIPAA e un Business Associate Agreement firmato, e la loro documentazione dice esplicitamente che SOC 2 non lo sostituisce. Le informazioni sanitarie protette portano anche regole su dove puoi metterle, tra cui la disposizione di non conservarle in bucket Storage pubblici.",{"q":389,"a":390},"Supabase è più sicuro di un backend fatto da me?","Sulle parti di cui si occupa Supabase, quasi certamente. Le patch dei server, gli aggiornamenti del database, la cifratura a riposo, la sicurezza di rete e un regime di accessi verificato sono cose che chi lavora da solo raramente fa con la stessa cura. Le parti che restano tue sono le stesse in entrambi i casi, e con un backend tuo ce n'è una in più: il codice tra la tua app e il tuo database.","\u002Fblog\u002Fis-supabase-secure\u002Fcard-800x500.png",[393,394,395,396,397,398,399],"supabase è sicuro","supabase e sicuro","quanto è sicuro supabase","sicurezza di supabase","supabase è sicuro per la produzione","supabase shared responsibility model","supabase soc 2",{},true,"\u002Fblog\u002Fis-supabase-secure","2026-08-29",{"title":5,"description":370},"blog\u002Fis-supabase-secure",[407,408,409],"Supabase è sicuro? La piattaforma sì: SOC 2 Type 2, ISO 27001, AES-256 a riposo, TLS in transito e penetration test regolari.","La documentazione SOC 2 di Supabase dice che quella conformità finisce al confine del loro prodotto. Le tue tabelle, le tue chiavi e i tuoi bucket Storage stanno dall'altra parte di quella linea.","Ad agosto 2026 abbiamo scansionato 30.998 app dal vivo. In 2.096 delle 3.680 che siamo riusciti a controllare, una tabella ha risposto a uno sconosciuto, su una piattaforma che funzionava esattamente come progettata.","Q4DAAroGc4lm8MSNm2hHHL8bAIZR2O9x5UWOiGKSv8U",[412,419,425,431,437,443,449,455,461,467,473,479,485,491,497,503,509,515,521,527,533,539,545,551,557,563,564,570,576,582,588,594,599,605,611,616,621,627,633,638,643,649],{"path":413,"title":414,"description":415,"published":416,"category":417,"image":418,"draft":371},"\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","Backups","\u002Fblog\u002Fsupabase-backup-auth-users\u002Fcard-800x500.png",{"path":420,"title":421,"description":422,"published":423,"category":367,"image":424,"draft":371},"\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":426,"title":427,"description":428,"published":429,"category":367,"image":430,"draft":371},"\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":432,"title":433,"description":434,"published":435,"category":367,"image":436,"draft":371},"\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":438,"title":439,"description":440,"published":441,"category":367,"image":442,"draft":371},"\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":444,"title":445,"description":446,"published":447,"category":367,"image":448,"draft":371},"\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":450,"title":451,"description":452,"published":453,"category":367,"image":454,"draft":371},"\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":456,"title":457,"description":458,"published":459,"category":367,"image":460,"draft":371},"\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":462,"title":463,"description":464,"published":465,"category":367,"image":466,"draft":371},"\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":468,"title":469,"description":470,"published":471,"category":417,"image":472,"draft":371},"\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":474,"title":475,"description":476,"published":477,"category":417,"image":478,"draft":371},"\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":480,"title":481,"description":482,"published":483,"category":417,"image":484,"draft":371},"\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":486,"title":487,"description":488,"published":489,"category":367,"image":490,"draft":371},"\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":492,"title":493,"description":494,"published":495,"category":367,"image":496,"draft":371},"\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":498,"title":499,"description":500,"published":501,"category":367,"image":502,"draft":371},"\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":504,"title":505,"description":506,"published":507,"category":367,"image":508,"draft":371},"\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":510,"title":511,"description":512,"published":513,"category":367,"image":514,"draft":371},"\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":516,"title":517,"description":518,"published":519,"category":367,"image":520,"draft":371},"\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":522,"title":523,"description":524,"published":525,"category":367,"image":526,"draft":371},"\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":528,"title":529,"description":530,"published":531,"category":367,"image":532,"draft":371},"\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":534,"title":535,"description":536,"published":537,"category":367,"image":538,"draft":371},"\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":540,"title":541,"description":542,"published":543,"category":367,"image":544,"draft":371},"\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":546,"title":547,"description":548,"published":549,"category":417,"image":550,"draft":371},"\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":552,"title":553,"description":554,"published":555,"category":367,"image":556,"draft":371},"\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":558,"title":559,"description":560,"published":561,"category":417,"image":562,"draft":371},"\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":402,"title":5,"description":370,"published":403,"category":367,"image":391,"draft":371},{"path":565,"title":566,"description":567,"published":568,"category":367,"image":569,"draft":371},"\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":571,"title":572,"description":573,"published":574,"category":367,"image":575,"draft":371},"\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":577,"title":578,"description":579,"published":580,"category":367,"image":581,"draft":371},"\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":583,"title":584,"description":585,"published":586,"category":417,"image":587,"draft":371},"\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":589,"title":590,"description":591,"published":592,"category":417,"image":593,"draft":371},"\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":270,"title":595,"description":596,"published":597,"category":367,"image":598,"draft":371},"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":600,"title":601,"description":602,"published":603,"category":367,"image":604,"draft":371},"\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":606,"title":607,"description":608,"published":609,"category":417,"image":610,"draft":371},"\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":98,"title":612,"description":613,"published":614,"category":367,"image":615,"draft":371},"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":617,"title":618,"description":619,"published":614,"category":367,"image":620,"draft":371},"\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":622,"title":623,"description":624,"published":625,"category":367,"image":626,"draft":371},"\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":628,"title":629,"description":630,"published":631,"category":417,"image":632,"draft":371},"\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":259,"title":634,"description":635,"published":636,"category":367,"image":637,"draft":371},"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":639,"title":640,"description":641,"published":636,"category":417,"image":642,"draft":371},"\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":644,"title":645,"description":646,"published":647,"category":417,"image":648,"draft":371},"\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":282,"title":650,"description":651,"published":647,"category":367,"image":652,"draft":371},"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",1790150956098]