[{"data":1,"prerenderedAt":701},["ShallowReactive",2],{"blog-it-where-to-find-supabase-api-keys":3,"blog-index-it":561},{"id":4,"title":5,"body":6,"category":514,"cover":515,"coverAlt":516,"description":517,"draft":518,"extension":519,"faq":520,"image":539,"keywords":540,"meta":548,"navigation":549,"ogTitle":550,"path":551,"published":552,"seo":553,"stem":554,"tldr":555,"updated":559,"__hash__":560},"blog_it\u002Fblog\u002Fwhere-to-find-supabase-api-keys.md","Dove trovare le chiavi API di Supabase: anon, service_role e URL",{"type":7,"value":8,"toc":500},"minimark",[9,22,25,28,33,41,56,59,63,66,77,80,106,109,113,116,231,237,240,244,252,255,275,282,285,289,302,305,323,326,335,339,342,345,357,361,364,367,380,398,403,410,414,417,423,441,451,455,488],[10,11,12,13,17,18,21],"p",{},"Qualcosa ti ha chiesto la tua chiave Supabase. Una guida di installazione, un\nthread di supporto, o una IA a cui hai detto di andare a sistemare la tua app.\nApri la dashboard, trovi una pagina con un indirizzo e due o tre chiavi con nomi\ntipo ",[14,15,16],"code",{},"anon"," e ",[14,19,20],{},"service_role",", e ognuna sembra poter essere la risposta.",[10,23,24],{},"Oppure è l'altra versione della scena. Qualcuno ha aperto il tuo sito, ha\npremuto F12 e ti ha detto che una chiave è esposta. Adesso vuoi guardare la\nchiave che ha trovato, e non sai dove abiti.",[10,26,27],{},"Quasi tutte le guide partono dalla pagina delle chiavi API. Il che dà per\nscontato che tu sappia già quale progetto Supabase è il tuo, ed è esattamente il\npassaggio che un builder ha fatto al posto tuo senza mai spiegarlo.",[29,30,32],"h2",{"id":31},"dove-sono-le-chiavi-api-di-supabase","Dove sono le chiavi API di Supabase?",[10,34,35,36,40],{},"Nella dashboard, dentro il tuo progetto, sotto ",[37,38,39],"strong",{},"Settings → API Keys",".",[10,42,43,44,47,48,51,52,55],{},"Il percorso completo: entra su supabase.com, scegli il tuo progetto dalla lista,\napri ",[37,45,46],{},"Settings"," nella barra laterale a sinistra, poi ",[37,49,50],{},"API Keys",". Quasi tutte\nle guide e gli screenshot che troverai chiamano quella pagina\n",[37,53,54],{},"Settings → API",", perché fino a poco fa si chiamava così. È la stessa pagina\ncon gli stessi valori.",[10,57,58],{},"Tutto quello che c'è sopra è una di due cose. Un indirizzo, che dice dove vive\nil tuo progetto. Oppure una chiave, che decide cosa una richiesta può fare una\nvolta arrivata. La pagina li elenca insieme, in una sola colonna, con lo stesso\ncarattere.",[29,60,62],{"id":61},"non-ho-mai-configurato-supabase-qual-è-il-mio-progetto","Non ho mai configurato Supabase. Qual è il mio progetto?",[10,64,65],{},"Leggi l'indirizzo che la tua app sta già usando. La risposta è lì dentro.",[10,67,68,69,72,73,76],{},"Ogni progetto Supabase ha un ",[37,70,71],{},"riferimento",": una stringa corta e casuale che è\nanche la prima parte dell'indirizzo del progetto,\n",[14,74,75],{},"https:\u002F\u002Fyourreference.supabase.co",". La tua app manda una richiesta a\nquell'indirizzo a ogni caricamento di pagina, quindi la stringa è già dentro la\ntua app, ed è la stessa con cui la dashboard identifica il tuo progetto.",[10,78,79],{},"Tre posti dove trovarla senza chiedere a nessuno:",[81,82,83,90,100],"ul",{},[84,85,86,89],"li",{},[37,87,88],{},"Nel tuo builder."," Lovable, Bolt, v0 e gli altri mostrano il progetto\nSupabase collegato da qualche parte nelle impostazioni o nel pannello delle\nintegrazioni del tuo progetto.",[84,91,92,95,96,99],{},[37,93,94],{},"Nel tuo browser."," Apri la tua app in produzione, premi F12, vai sulla\nscheda Network e ricarica la pagina. Le richieste che partono verso qualcosa\ncon ",[14,97,98],{},".supabase.co"," portano il riferimento nel proprio indirizzo.",[84,101,102,105],{},[37,103,104],{},"Nel sorgente della pagina",", se la tua app scrive l'indirizzo nell'HTML\ninvece che in un file di script.",[10,107,108],{},"Poi entra su supabase.com e confronta quel riferimento con la lista dei tuoi\nprogetti. I builder collegano Supabase attraverso il tuo stesso account, quindi\nil progetto di solito sta in una dashboard a cui ti sei iscritto una volta e che\nnon hai mai usato. Una volta dentro un progetto il riferimento compare nella\nbarra degli indirizzi del browser, ed è così che confermi di essere in quello\ngiusto prima di copiarne qualcosa.",[29,110,112],{"id":111},"le-quattro-cose-su-quella-pagina","Le quattro cose su quella pagina",[10,114,115],{},"Un indirizzo e tre chiavi. Due vanno nella tua app e due non lasciano mai la\ndashboard.",[117,118,119,138],"table",{},[120,121,122],"thead",{},[123,124,125,129,132,135],"tr",{},[126,127,128],"th",{},"Quello che vedi",[126,130,131],{},"Che cos'è",[126,133,134],{},"Dove va",[126,136,137],{},"Se trapela",[139,140,141,165,189,213],"tbody",{},[123,142,143,149,155,162],{},[144,145,146],"td",{},[37,147,148],{},"Project URL",[144,150,151,152,154],{},"L'indirizzo del tuo progetto, ",[14,153,75],{},". Dice dove, mai chi.",[144,156,157],{},[158,159,161],"key-verdict",{"type":160},"safe","Nella tua app",[144,163,164],{},"Niente. Viaggia già verso ogni visitatore a ogni caricamento di pagina.",[123,166,167,176,182,186],{},[144,168,169,172,173],{},[37,170,171],{},"Publishable key"," ",[14,174,175],{},"sb_publishable_…",[144,177,178,179,181],{},"Dice qual è il progetto e non porta permessi propri. Si chiama ",[14,180,16],{}," in un progetto vecchio.",[144,183,184],{},[158,185,161],{"type":160},[144,187,188],{},"Niente di per sé. Legge esattamente quello che le tue regole Row Level Security permettono.",[123,190,191,199,204,210],{},[144,192,193,172,196],{},[37,194,195],{},"Secret key",[14,197,198],{},"sb_secret_…",[144,200,201,202,181],{},"Legge e scrive ogni riga di ogni tabella, qualunque cosa dicano le tue regole. Si chiama ",[14,203,20],{},[144,205,206],{},[158,207,209],{"type":208},"danger","Solo server",[144,211,212],{},"Ogni riga di ogni tabella, per chiunque l'abbia trovata.",[123,214,215,220,223,228],{},[144,216,217],{},[37,218,219],{},"JWT secret",[144,221,222],{},"Firma i token che dicono chi ha fatto accesso. Si chiama JWT signing keys in un progetto nuovo.",[144,224,225],{},[158,226,227],{"type":208},"Resta in Supabase",[144,229,230],{},"Qualcuno può emettere un token che dichiara di essere uno qualsiasi dei tuoi utenti, amministratore compreso.",[232,233],"diagram",{"alt":234,"caption":235,"src":236},"Un pannello di impostazioni con quattro righe. La URL e la chiave anon hanno una spunta e i loro valori sono mostrati per intero. Sotto una linea spessa, la chiave service_role e il valore JWT hanno una croce e i loro valori sono coperti da puntini.","Quattro valori, una pagina. Supabase non traccia nessuna linea in mezzo, e la maschera sui due in basso è l'unico indizio che ti dà.","\u002Fblog\u002Fwhere-to-find-supabase-api-keys\u002Ffour-values-one-page-1600x720.png",[10,238,239],{},"C'è una scorciatoia sulla pagina stessa. Supabase stampa l'URL del progetto e la\nchiave pubblicabile dove puoi leggerle, e copre la chiave segreta e il valore\nJWT con dei puntini finché non chiedi di vederli. Le due che copre sono\nesattamente le due che nella tua app non ci vanno mai.",[29,241,243],{"id":242},"dovè-lurl-del-mio-progetto-supabase","Dov'è l'URL del mio progetto Supabase?",[10,245,246,247,249,250,40],{},"In due posti, e probabilmente ne stai già guardando uno. La dashboard lo stampa\nin cima a ",[37,248,39],{},", con l'etichetta Project URL. La barra degli\nindirizzi del browser mostra la stessa stringa ogni volta che la tua app parla\ncon Supabase, nella forma ",[14,251,75],{},[10,253,254],{},"Nel codice porta uno di tre nomi, e tutti e tre contengono quella stessa\nstringa:",[81,256,257,263,269],{},[84,258,259,262],{},[14,260,261],{},"VITE_SUPABASE_URL"," in un'app costruita con Vite, che copre gran parte di quello\nche producono Lovable e Bolt",[84,264,265,268],{},[14,266,267],{},"NEXT_PUBLIC_SUPABASE_URL"," in un'app Next.js",[84,270,271,274],{},[14,272,273],{},"SUPABASE_URL"," su un server, in una edge function o in uno script",[10,276,277,278,281],{},"La parte centrale, ",[14,279,280],{},"yourreference",", è il riferimento del tuo progetto. È la\nstringa con cui la dashboard riconosce il progetto, e quella da confrontare\nquando hai più progetti e nessuna idea di quale appartenga a questa app.",[10,283,284],{},"È un indirizzo più che un segreto, ed è per questo che sta in chiaro accanto alla\nchiave pubblicabile.",[29,286,288],{"id":287},"dovè-la-chiave-service_role-e-che-cosè-supabase_service_role_key","Dov'è la chiave service_role, e che cos'è SUPABASE_SERVICE_ROLE_KEY?",[10,290,291,292,294,295,297,298,301],{},"Sulla stessa pagina di tutto il resto. Apri ",[37,293,39],{}," e cerca la\nriga ",[14,296,20],{},", o ",[14,299,300],{},"secret"," su un progetto creato di recente. A differenza\ndell'URL e della chiave pubblicabile, il suo valore resta dietro un comando di\nrivelazione finché non lo chiedi.",[10,303,304],{},"Quel comando è l'unico indizio che la dashboard ti dà del fatto che questa è\ndiversa, e merita di essere preso sul serio: Supabase copre esattamente i valori\nche non devono mai arrivare a un browser.",[10,306,307,310,311,314,315,318,319,322],{},[14,308,309],{},"SUPABASE_SERVICE_ROLE_KEY"," è un nome di variabile più che una seconda chiave:\ndietro c'è il valore che hai appena rivelato. Lo incontrerai in un file ",[14,312,313],{},".env",",\nnelle impostazioni d'ambiente del tuo host, o nei secret di una edge function.\nQuello che conta è il prefisso davanti. Una variabile chiamata\n",[14,316,317],{},"VITE_SUPABASE_SERVICE_ROLE_KEY"," o ",[14,320,321],{},"NEXT_PUBLIC_SUPABASE_SERVICE_ROLE_KEY"," viene\ncompilata dentro il JavaScript che i tuoi visitatori scaricano, quindi la chiave\nè pubblica nel momento in cui pubblichi. Quei prefissi sono istruzioni a\npubblicare, non sviste.",[10,324,325],{},"Il posto giusto è una edge function, un gestore di webhook, un job pianificato o\nuno script di migrazione: ovunque il codice giri su una macchina che controlli e\nnessun visitatore possa aprire il file. Questa è la chiave che ignora del tutto\nla Row Level Security, quindi legge ogni riga di ogni tabella qualunque cosa\ndicano le tue regole.",[10,327,328,329,334],{},"Se non sei sicuro che la tua sia rimasta sul server, il nostro\n",[330,331,333],"a",{"href":332},"\u002Fsecurity-scanner","scanner di sicurezza per siti gratuito"," legge il tuo sito\nonline dall'esterno e nomina le chiavi che trova, in una ventina di secondi.",[29,336,338],{"id":337},"di-quale-chiave-ha-bisogno-la-mia-app","Di quale chiave ha bisogno la mia app?",[10,340,341],{},"L'URL del progetto e la chiave pubblicabile. Nient'altro, mai.",[10,343,344],{},"La tua app gira nel browser dei tuoi visitatori e parla con Supabase da lì,\nquindi entrambi quei valori viaggiano verso ogni visitatore per costruzione. Non\nè una fuga di dati e non lo è mai stata. Quello che impedisce a uno sconosciuto\ndi leggere tutto il tuo database con una chiave pubblicabile è la Row Level\nSecurity: le regole che decidono, riga per riga, chi può vedere cosa.",[10,346,347,348,352,353,40],{},"Quelle regole sono quindi la cosa da controllare quando ti preoccupi, e\n",[330,349,351],{"href":350},"\u002Fblog\u002Fsupabase-rls-on-but-table-still-public","accenderle non è la stessa cosa che essere protetti",".\nLa versione lunga del perché una chiave è sicura in pubblico sta in\n",[330,354,356],{"href":355},"\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend","quali chiavi API sono sicure nel frontend",[29,358,360],{"id":359},"come-faccio-a-sapere-quale-chiave-ha-davvero-portato-la-mia-app","Come faccio a sapere quale chiave ha davvero portato la mia app?",[10,362,363],{},"Dalla dashboard non lo capisci. Elenca le chiavi che il tuo progetto ha, non\nquella che è finita dentro la tua app.",[10,365,366],{},"Sono due domande diverse, e solo la seconda può farti male. Un progetto può\navere una pagina di impostazioni del tutto normale e avere comunque la sua\nchiave segreta incollata in un file che chiunque può aprire. Per rispondere devi\nleggere la chiave che sta davvero nell'app.",[10,368,369,172,372,375,376,379],{},[37,370,371],{},"In un progetto nuovo, leggi i primi caratteri.",[14,373,374],{},"sb_publishable_"," è quella\nche ci deve stare. ",[14,377,378],{},"sb_secret_"," è quella di cui occuparsi oggi.",[10,381,382,172,385,387,388,390,391,394,395,40],{},[37,383,384],{},"In un progetto vecchio, devi guardare dentro la chiave.",[14,386,16],{}," e\n",[14,389,20],{}," sono JWT: tre blocchi separati da punti, e quello centrale si\ndecodifica in testo perfettamente leggibile. Porta un campo ",[14,392,393],{},"role",", e quella\nsola parola è tutta la differenza fra le due.\n",[330,396,397],{"href":355},"Come leggerlo",[232,399],{"alt":400,"caption":401,"src":402},"A sinistra la pagina delle impostazioni con quattro valori, con le righe anon e service_role evidenziate. Due linee tratteggiate partono da quelle due righe e convergono in un unico spazio evidenziato dentro un blocco di codice a destra, segnato con un punto interrogativo.","La dashboard ti mostra quali chiavi esistono. Quale di esse la tua app abbia portato con sé è una domanda a cui può rispondere solo la tua app.","\u002Fblog\u002Fwhere-to-find-supabase-api-keys\u002Fwhat-exists-vs-what-shipped-1600x700.png",[10,404,405,406,40],{},"Se preferisci non passare la tua app a mano, la nostra scansione gratuita legge\nil tuo sito in produzione dall'esterno e nomina le chiavi che riesce a vedere,\ninsieme al fatto che le tue tabelle rispondano o no a uno sconosciuto che\nchiede. Ci vogliono circa 20 secondi e non serve un account:\n",[330,407,409],{"href":408},"\u002F#scan","scansiona la tua app",[29,411,413],{"id":412},"e-se-la-chiave-segreta-è-già-nella-mia-app","E se la chiave segreta è già nella mia app?",[10,415,416],{},"Occupati della chiave prima di toccare qualsiasi codice, e su Supabase potrebbe\nnon voler dire quello che ti aspetti.",[10,418,419,420,422],{},"Il consiglio abituale è ruotare: generi una chiave nuova, revochi quella\nvecchia, e il valore trapelato smette di funzionare. Per le chiavi nuove vale\nancora. Un progetto può tenere più chiavi ",[14,421,378],{}," insieme e revocarle una\nalla volta, quindi sostituirne una non significa più un minuto in cui tutto ciò\nche la usava è rotto.",[10,424,425,426,432,433,435,436,440],{},"Per la coppia originale non vale per niente. Le note di risoluzione dei problemi\ndi Supabase dicono che\n",[330,427,431],{"href":428,"rel":429},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Ftroubleshooting\u002Frotating-anon-service-and-jwt-secrets-1Jq6yd",[430],"nofollow","non è più possibile ruotare i vecchi segreti anon, service_role e JWT",".\nRendere inutilizzabile una vecchia chiave ",[14,434,20],{}," trapelata passa dal\ncreare le chiavi nuove, spostare app e codice server su di esse, e poi\ndisattivare la vecchia coppia. ",[330,437,439],{"href":438},"\u002Fblog\u002Fsupabase-new-api-keys","Cosa comporta quella migrazione","\nsono una manciata di passaggi nella dashboard e un valore sostituito nella tua\napp, cosa parecchio più facile in un pomeriggio tranquillo che nel giorno in cui\nti serve.",[442,443,445],"callout",{"type":444},"warn",[10,446,447,450],{},[37,448,449],{},"Cancellare la chiave dal codice non chiude la porta."," Il vecchio valore è\nancora nella tua cronologia delle versioni, in ogni deploy che da allora non hai\nricostruito, e nella copia in cache della tua pagina che ha chiunque l'abbia\ncaricata mentre la chiave era attiva. Chi ha salvato una di quelle copie può\nusarla domani contro il tuo database.",[29,452,454],{"id":453},"cosa-fare-adesso","Cosa fare adesso",[456,457,458],"key-takeaways",{},[81,459,460,469,472,482,485],{},[84,461,462,463,465,466,468],{},"Apri ",[37,464,39],{}," dentro il tuo progetto. Se non trovi il progetto, prendi il riferimento da ",[14,467,75],{}," e confrontalo con la lista della tua dashboard.",[84,470,471],{},"Metti nella tua app l'URL del progetto e la chiave pubblicabile. Quelle due, e nient'altro.",[84,473,474,475,477,478,481],{},"Leggi la chiave che la tua app ha davvero portato. ",[14,476,378],{}," in testa, oppure ",[14,479,480],{},"\"role\": \"service_role\""," dentro una vecchia, è la scoperta da trattare oggi.",[84,483,484],{},"Se una chiave segreta è nel tuo frontend, rendila inutilizzabile prima di modificare qualsiasi cosa. In un progetto vecchio vuol dire creare le chiavi nuove e disattivare la vecchia coppia, e non esiste un unico pulsante per farlo.",[84,486,487],{},"Guarda la Row Level Security già che sei nella dashboard. Una chiave pubblicabile è sicura solo grazie a quelle regole, e senza di esse legge tutto il tuo database.",[10,489,490,491,495,496,40],{},"Se preferisci affrontarlo come una lista, la\n",[330,492,494],{"href":493},"\u002Fchecklist","checklist di sicurezza in 10 minuti"," copre questo e le altre cose\nda spegnere in una app appena lanciata, e abbiamo una guida in linguaggio\nsemplice per le ",[330,497,499],{"href":498},"\u002Fis-your-supabase-app-safe","app Supabase",{"title":501,"searchDepth":502,"depth":502,"links":503},"",3,[504,506,507,508,509,510,511,512,513],{"id":31,"depth":505,"text":32},2,{"id":61,"depth":505,"text":62},{"id":111,"depth":505,"text":112},{"id":242,"depth":505,"text":243},{"id":287,"depth":505,"text":288},{"id":337,"depth":505,"text":338},{"id":359,"depth":505,"text":360},{"id":412,"depth":505,"text":413},{"id":453,"depth":505,"text":454},"Basi della sicurezza","\u002Fblog\u002Fwhere-to-find-supabase-api-keys\u002Fcover-1200x630.png","Un pannello di impostazioni: una URL e una chiave anon in chiaro, una chiave service_role e un valore JWT nascosti dietro dei puntini.","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.",false,"md",[521,524,527,530,533,536],{"q":522,"a":523},"Dov'è la chiave service_role in Supabase?","Nella dashboard, dentro il tuo progetto, sotto Settings → API Keys. In un progetto vecchio compare col nome service_role ed è nascosta dietro un pulsante per mostrarla; in uno nuovo è una chiave segreta che comincia con sb_secret_. Le guide più vecchie chiamano la stessa pagina Settings → API.",{"q":525,"a":526},"Che aspetto ha una chiave anon di Supabase?","In un progetto nuovo è una stringa lunga che comincia con sb_publishable_. In uno vecchio è un JWT: tre blocchi di caratteri separati da punti, che iniziano con eyJ, e in tutto lunghi qualche centinaio di caratteri. La chiave service_role ha esattamente lo stesso aspetto, ed è per questo che le due vengono scambiate.",{"q":528,"a":529},"L'URL del mio progetto Supabase è un segreto?","No. È l'indirizzo a cui la tua app manda ogni richiesta, quindi viaggia verso ogni visitatore per costruzione e non esiste una versione della tua app in cui sia nascosto. Trovarlo non è una scoperta. Chi decide se uno sconosciuto può leggere i tuoi dati è la Row Level Security, non il fatto che conosca il tuo indirizzo.",{"q":531,"a":532},"La mia app me l'hanno costruita e non ho mai aperto Supabase. Come entro?","Trova prima il riferimento del progetto: la stringa corta e casuale dentro l'indirizzo che la tua app già chiama, https:\u002F\u002Fyourreference.supabase.co. I builder collegano Supabase attraverso il tuo stesso account, quindi il progetto di solito sta in una dashboard a cui ti sei iscritto una volta e che non hai mai usato. Entra su supabase.com con quell'account e confronta il riferimento con la lista dei progetti.",{"q":534,"a":535},"Posso ruotare una chiave service_role che è trapelata?","Solo se è una delle nuove chiavi sb_secret_, di cui puoi tenerne diverse e revocarle una alla volta. Supabase ha detto che non è più possibile ruotare i vecchi segreti anon, service_role e JWT. Rendere inutilizzabile una vecchia chiave trapelata passa quindi dal creare le chiavi nuove, spostare app e codice server su di esse, e poi disattivare la vecchia coppia.",{"q":537,"a":538},"Che cos'è SUPABASE_SERVICE_ROLE_KEY?","È il nome della variabile d'ambiente con cui il tuo codice tiene la chiave segreta, quella che su un progetto più vecchio si chiama service_role e su uno più recente sb_secret_. Il suo posto è soltanto la configurazione lato server: una edge function, un gestore di webhook, un job pianificato. Tutto ciò che ha un prefisso VITE_ o NEXT_PUBLIC_ finisce compilato nel bundle del browser, quindi una chiave service_role dietro uno di quei nomi è pubblica nel momento in cui pubblichi.","\u002Fblog\u002Fwhere-to-find-supabase-api-keys\u002Fcard-800x500.png",[541,542,543,544,545,546,547],"dov'è la chiave service_role di supabase","trovare chiave service_role supabase","trovare chiave anon supabase","chiavi api supabase","formato chiave anon supabase","url progetto supabase","come ottenere chiave supabase",{},true,"Dov'è la chiave service_role di Supabase?","\u002Fblog\u002Fwhere-to-find-supabase-api-keys","2026-08-28",{"title":5,"description":517},"blog\u002Fwhere-to-find-supabase-api-keys",[556,557,558],"Ogni chiave Supabase, service_role compresa, sta su una pagina sola: apri il tuo progetto nella dashboard, poi Settings → API Keys.","Lì ci sono quattro valori. L'URL del progetto e la chiave pubblicabile vanno nella tua app; la chiave segreta e il valore JWT mai.","Quella pagina ti dice quali chiavi esistono. Non ti dice quale è finita nella tua app, e solo la seconda domanda può farti male.","2026-09-05","UxpnsABBT5FlU9THaPSmd2UQeu6C_SR8BRg9kRx3CQM",[562,568,573,579,585,591,598,604,610,616,617,623,629,635,641,647,653,659,665,670,675,681,686,691,697],{"path":563,"title":564,"description":565,"published":566,"category":514,"image":567,"draft":518},"\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":569,"title":570,"description":571,"published":559,"category":514,"image":572,"draft":518},"\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.","\u002Fblog\u002Fvibe-coding-security-scanner\u002Fcard-800x500.png",{"path":574,"title":575,"description":576,"published":577,"category":514,"image":578,"draft":518},"\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":580,"title":581,"description":582,"published":583,"category":514,"image":584,"draft":518},"\u002Fblog\u002Fopenai-api-key-exposed-in-frontend","La tua chiave API OpenAI è esposta nel frontend. Ruotala.","Una chiave API OpenAI esposta nel tuo frontend non accetta nessuna restrizione di dominio. È un token al portatore, e chi la trova spende i tuoi soldi.","2026-09-03","\u002Fblog\u002Fopenai-api-key-exposed-in-frontend\u002Fcard-800x500.png",{"path":586,"title":587,"description":588,"published":589,"category":514,"image":590,"draft":518},"\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":592,"title":593,"description":594,"published":595,"category":596,"image":597,"draft":518},"\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","Backups","\u002Fblog\u002Fsupabase-backup-tools-compared\u002Fcard-800x500.png",{"path":599,"title":600,"description":601,"published":602,"category":514,"image":603,"draft":518},"\u002Fblog\u002Freplit-secrets-explained","Come usare i secret su Replit, e cosa viene comunque pubblicato","Come usare i secret su Replit e il caso che lo strumento non copre: una chiave letta dal tuo codice del browser viene pubblicata con la tua app.","2026-08-31","\u002Fblog\u002Freplit-secrets-explained\u002Fcard-800x500.png",{"path":605,"title":606,"description":607,"published":608,"category":596,"image":609,"draft":518},"\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":611,"title":612,"description":613,"published":614,"category":514,"image":615,"draft":518},"\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":551,"title":5,"description":517,"published":552,"category":514,"image":539,"draft":518},{"path":618,"title":619,"description":620,"published":621,"category":514,"image":622,"draft":518},"\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":624,"title":625,"description":626,"published":627,"category":514,"image":628,"draft":518},"\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":630,"title":631,"description":632,"published":633,"category":596,"image":634,"draft":518},"\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":636,"title":637,"description":638,"published":639,"category":596,"image":640,"draft":518},"\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":642,"title":643,"description":644,"published":645,"category":514,"image":646,"draft":518},"\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":648,"title":649,"description":650,"published":651,"category":514,"image":652,"draft":518},"\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":654,"title":655,"description":656,"published":657,"category":596,"image":658,"draft":518},"\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":660,"title":661,"description":662,"published":663,"category":514,"image":664,"draft":518},"\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":666,"title":667,"description":668,"published":663,"category":514,"image":669,"draft":518},"\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":438,"title":671,"description":672,"published":673,"category":514,"image":674,"draft":518},"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":676,"title":677,"description":678,"published":679,"category":596,"image":680,"draft":518},"\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":350,"title":682,"description":683,"published":684,"category":514,"image":685,"draft":518},"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":687,"title":688,"description":689,"published":684,"category":596,"image":690,"draft":518},"\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":692,"title":693,"description":694,"published":695,"category":596,"image":696,"draft":518},"\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":355,"title":698,"description":699,"published":695,"category":514,"image":700,"draft":518},"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",1788681839602]