[{"data":1,"prerenderedAt":417},["ShallowReactive",2],{"blog-it-supabase-new-api-keys":3},{"id":4,"title":5,"body":6,"category":380,"cover":381,"coverAlt":381,"description":382,"draft":383,"extension":384,"faq":385,"image":398,"keywords":399,"meta":405,"navigation":406,"ogTitle":407,"path":408,"published":409,"seo":410,"stem":411,"tldr":412,"updated":409,"__hash__":416},"blog_it\u002Fblog\u002Fsupabase-new-api-keys.md","Le nuove chiavi API di Supabase: quale va nella tua app?",{"type":7,"value":8,"toc":369},"minimark",[9,29,32,37,48,79,87,94,100,104,107,113,118,122,125,211,217,224,228,231,265,268,277,281,290,316,325,329,356],[10,11,12,13,17,18,21,22,17,25,28],"p",{},"Se hai aperto di recente il pannello Supabase e hai trovato chiavi che iniziano\ncon ",[14,15,16],"code",{},"sb_publishable_"," e ",[14,19,20],{},"sb_secret_"," dove prima c'erano ",[14,23,24],{},"anon",[14,26,27],{},"service_role",",\nnon si è rotto niente. Supabase ha rinominato le sue chiavi API, e la coppia che\nconoscevi è in uscita.",[10,30,31],{},"Il cambiamento è piccolo in quello che fa e grande in quello che evita. Le due\nchiavi svolgono ancora esattamente i due compiti di sempre. La novità è che ora\nvedi quale è quale senza aprire nulla.",[33,34,36],"h2",{"id":35},"cosa-ha-cambiato-davvero-supabase","Cosa ha cambiato davvero Supabase",[10,38,39,40,47],{},"Supabase ha\n",[41,42,46],"a",{"href":43,"rel":44},"https:\u002F\u002Fsupabase.com\u002Fblog\u002Fjwt-signing-keys",[45],"nofollow","annunciato le nuove chiavi a luglio 2025",",\ninsieme a un cambiamento nel modo in cui firma i token di accesso. Due cose ne\nhanno sostituite due:",[49,50,51,67],"ul",{},[52,53,54,55,59,60,63,64,66],"li",{},"La chiave ",[56,57,58],"strong",{},"pubblicabile",", ",[14,61,62],{},"sb_publishable_…",", sostituisce la chiave ",[14,65,24],{},".",[52,68,69,70,59,73,76,77,66],{},"Le chiavi ",[56,71,72],{},"segrete",[14,74,75],{},"sb_secret_…",", sostituiscono la chiave ",[14,78,27],{},[10,80,81,82,86],{},"I permessi non cambiano. Una chiave pubblicabile continua a identificare il tuo\nprogetto e non porta permessi propri; una segreta continua ad aggirare ogni\nregola tu abbia scritto. Se sai già\n",[41,83,85],{"href":84},"\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend","quali chiavi sono sicure in un frontend",",\nniente di quell'intuizione è diventato falso.",[10,88,89,90,93],{},"Due differenze pratiche vale la pena conoscerle. Puoi avere ",[56,91,92],{},"più"," chiavi\nsegrete insieme e revocarle una alla volta: ruotare una chiave non significa più\nun momento in cui tutto ciò che la usava è rotto. E le vecchie chiavi avevano una\nproprietà che quasi nessuno notava: erano JWT che scadono dieci anni dopo la\ncreazione del progetto. Le nuove non portano una scadenza dentro di sé.",[95,96],"diagram",{"alt":97,"caption":98,"src":99},"Due chiavi disegnate una sopra l'altra. Quella più vecchia è fatta di tre blocchi separati da punti, con quello centrale aperto a mostrare la parola role. Quella nuova è una sola stringa, con la prima parola sb trattino basso secret evidenziata davanti.","Gli stessi due compiti, due forme diverse. Nella coppia vecchia il ruolo è sepolto nel mezzo; in quella nuova è la prima cosa che leggi.","\u002Fblog\u002Fsupabase-new-api-keys\u002Ftwo-key-formats-1600x640.png",[33,101,103],{"id":102},"quale-delle-due-sta-bene-nella-tua-app","Quale delle due sta bene nella tua app",[10,105,106],{},"Quella pubblicabile, e soltanto quella.",[10,108,109,110,112],{},"La tua app gira nel browser del tuo visitatore, e la richiesta al tuo database\nparte da lì. Deve dire a quale progetto appartiene, e quell'identificativo arriva\na ogni visitatore per progetto. ",[14,111,62],{}," è la chiave costruita per\nquesto: trovarla nella tua app non è un problema, e non lo è mai stato.",[10,114,115,117],{},[14,116,75],{}," è l'opposto. Legge e scrive ogni riga di ogni tabella da qualunque\nposto, ignorando del tutto le tue policy, ed è esattamente il suo scopo. Il suo\nposto è un server, una edge function, un worker: nessun luogo che un browser\npossa raggiungere. Se una è mai finita incollata nel codice frontend, rigenerala\nnel pannello prima di toccare altro, perché cancellare la riga non chiude la\nporta.",[33,119,121],{"id":120},"come-capire-quale-hai","Come capire quale hai",[10,123,124],{},"Leggi i primi caratteri. Ormai è tutto qui il controllo.",[126,127,128,144],"table",{},[129,130,131],"thead",{},[132,133,134,138,141],"tr",{},[135,136,137],"th",{},"Cosa vedi",[135,139,140],{},"Che cos'è",[135,142,143],{},"Sicura nel browser?",[145,146,147,164,179,196],"tbody",{},[132,148,149,154,157],{},[150,151,152],"td",{},[14,153,62],{},[150,155,156],{},"chiave pubblicabile attuale",[150,158,159],{},[160,161,163],"key-verdict",{"type":162},"safe","Al suo posto",[132,165,166,170,173],{},[150,167,168],{},[14,169,75],{},[150,171,172],{},"chiave segreta attuale",[150,174,175],{},[160,176,178],{"type":177},"danger","Mai",[132,180,181,189,192],{},[150,182,183,186,187],{},[14,184,185],{},"eyJ…"," con ",[14,188,24],{},[150,190,191],{},"vecchia chiave pubblicabile",[150,193,194],{},[160,195,163],{"type":162},[132,197,198,204,207],{},[150,199,200,186,202],{},[14,201,185],{},[14,203,27],{},[150,205,206],{},"vecchia chiave segreta",[150,208,209],{},[160,210,178],{"type":177},[10,212,213,214,66],{},"Una chiave attuale è una stringa lunga in due metà: un centro casuale e un breve\ncodice di controllo alla fine. Una vecchia chiave è fatta di tre blocchi separati\nda punti, e quello centrale è testo leggibile invece che cifratura, ed ecco perché\ndistinguere la vecchia coppia voleva dire decodificarla e leggere il campo ",[14,215,216],{},"role",[10,218,219,220,66],{},"Se trovi una chiave nella tua app e non capisci quale sia, la nostra scansione\ngratuita legge il tuo sito dal vivo dall'esterno e dice cosa riesce a vedere. Ci\nvogliono una ventina di secondi e non serve un account:\n",[41,221,223],{"href":222},"\u002F#scan","scansiona la tua app",[33,225,227],{"id":226},"le-mie-vecchie-chiavi-anon-e-service_role-funzionano-ancora","Le mie vecchie chiavi anon e service_role funzionano ancora?",[10,229,230],{},"Oggi sì. Supabase ha pubblicato un calendario, non un interruttore:",[126,232,233,243],{},[129,234,235],{},[132,236,237,240],{},[135,238,239],{},"Quando",[135,241,242],{},"Cosa succede",[145,244,245,257],{},[132,246,247,250],{},[150,248,249],{},"1 novembre 2025",[150,251,252,253,17,255,66],{},"I progetti ripristinati dopo questa data non ricevono più ",[14,254,24],{},[14,256,27],{},[132,258,259,262],{},[150,260,261],{},"Fine 2026, data non fissata",[150,263,264],{},"Tutti i progetti dovranno usare le chiavi nuove.",[10,266,267],{},"Quindi non c'è un'emergenza questa settimana, e c'è una scadenza quest'anno. Se\nla tua app è stata costruita prima della rinomina e da allora non è stata\ntoccata, in questo momento gira su chiavi vecchie e continuerà ancora per un po'.",[10,269,270,271,273,274,276],{},"L'argomento per muoversi presto non è la scadenza. È il giorno in cui qualcuno\nincolla la chiave sbagliata in un prompt: ",[14,272,20],{}," si annuncia, ",[14,275,185],{}," no.",[33,278,280],{"id":279},"come-cambiare-senza-rompere-la-tua-app","Come cambiare senza rompere la tua app",[10,282,283,284,289],{},"La ",[41,285,288],{"href":286,"rel":287},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fgetting-started\u002Fmigrating-to-new-api-keys",[45],"guida alla migrazione","\ndi Supabase è il riferimento. La versione breve, per un'app che non hai scritto a\nmano:",[291,292,293,300,303,310,313],"ol",{},[52,294,295,296,299],{},"Nel pannello apri ",[56,297,298],{},"Settings → API Keys"," e crea le chiavi nuove. Questo le\naggiunge; non rimuove le vecchie, ed entrambe le coppie funzionano insieme.",[52,301,302],{},"Trova il punto in cui la tua app crea il client Supabase e sostituisci la\nchiave pubblicabile. In un builder come Lovable o Bolt di solito è un valore\nnelle impostazioni del progetto, non una riga di codice.",[52,304,305,306,309],{},"Sostituisci la chiave segreta ovunque venga usata ",[56,307,308],{},"su un server",": edge\nfunction, webhook, job pianificati, qualsiasi cosa che non sia il browser.",[52,311,312],{},"Carica la tua app e passa dalle parti che leggono e scrivono dati. Una chiave\npubblicabile sbagliata fallisce subito e in modo rumoroso, che è il caso buono.",[52,314,315],{},"Solo quando tutto funziona, disattiva le chiavi vecchie.",[10,317,318,319,321,322,324],{},"Il passo 5 è quello da lasciare per ultimo, e conviene farlo di proposito\npiuttosto che mai: i progetti migrati a metà, in cui l'app porta ancora una\nvecchia chiave ",[14,320,24],{}," accanto a una ",[14,323,16],{}," viva, sono comuni e\nconfondono quando qualcosa non va.",[33,326,328],{"id":327},"cosa-fare-questa-settimana","Cosa fare questa settimana",[330,331,332],"key-takeaways",{},[49,333,334,337,346,349],{},[52,335,336],{},"Apri Settings → API Keys e guarda quali coppie ha il tuo progetto. È un minuto e ti dice a che punto sei.",[52,338,339,340,342,343,345],{},"Se trovi ",[14,341,75],{}," o ",[14,344,27],{}," da qualche parte nel codice frontend, rigenera la chiave oggi. È l'unica voce urgente di questo elenco.",[52,347,348],{},"Crea le chiavi nuove e sposta la tua app quando hai mezz'ora, non per la scadenza, ma perché il prefisso rende ovvio il prossimo errore.",[52,350,351,352,66],{},"Già che ci sei, guarda la Row Level Security. La chiave nuova non cambia nulla di ciò che le tue policy permettono, e ",[41,353,355],{"href":354},"\u002Fblog\u002Fsupabase-rls-on-but-table-still-public","attivare RLS non è la stessa cosa che essere protetti",[10,357,358,359,363,364,368],{},"Se vuoi la versione specifica per piattaforma di cosa controllare, abbiamo una\nguida in linguaggio semplice per le ",[41,360,362],{"href":361},"\u002Fis-your-supabase-app-safe","app con Supabase",",\ne la ",[41,365,367],{"href":366},"\u002Fchecklist","checklist di sicurezza in 10 minuti"," copre questo punto\ninsieme alle altre cose da disattivare in un'app appena lanciata.",{"title":370,"searchDepth":371,"depth":371,"links":372},"",3,[373,375,376,377,378,379],{"id":35,"depth":374,"text":36},2,{"id":102,"depth":374,"text":103},{"id":120,"depth":374,"text":121},{"id":226,"depth":374,"text":227},{"id":279,"depth":374,"text":280},{"id":327,"depth":374,"text":328},"Basi della sicurezza",null,"Supabase ha sostituito anon e service_role con chiavi pubblicabili e segrete. Quale sta bene nella tua app, e quale non deve starci mai?",false,"md",[386,389,392,395],{"q":387,"a":388},"sb_publishable_ è la stessa cosa della chiave anon?","Fa lo stesso lavoro. Dice qual è il tuo progetto perché una richiesta sappia dove andare, non porta permessi propri ed è fatta per stare nella tua app, dove chiunque può leggerla. Ciò che protegge i tuoi dati in entrambi i casi è la Row Level Security, non la chiave.",{"q":390,"a":391},"Le mie chiavi anon e service_role funzionano ancora?","Sì, oggi. Supabase le ha tenute attive durante la migrazione e puoi avere entrambe le coppie insieme. È stato annunciato che a fine 2026 tutti i progetti dovranno passare alle nuove chiavi, senza che la data esatta sia ancora fissata.",{"q":393,"a":394},"Ho entrambe le coppie nel pannello. Quale deve usare la mia app?","Quella pubblicabile, sb_publishable_. Il cambio è di una riga: sostituisci la chiave che la tua app passa quando crea il client Supabase. Nulla cambia per le tue tabelle o le tue policy, perché la nuova chiave ha esattamente i permessi che aveva la anon.",{"q":396,"a":397},"Il nuovo formato rende la mia app più sicura da solo?","No. Rende la chiave pericolosa facile da riconoscere, e questo vale denaro in errori non commessi, ma una chiave pubblicabile legge ancora tutto ciò che le tue policy le lasciano leggere. Se la Row Level Security è spenta, la chiave nuova apre il tuo database esattamente quanto lo apriva la vecchia.","\u002Fblog\u002Fsupabase-new-api-keys\u002Fcard-800x500.png",[400,401,402,403,404],"nuove chiavi api supabase","chiave sb_publishable","chiave sb_secret","chiave anon supabase obsoleta","migrazione chiavi api supabase",{},true,"Le nuove chiavi API di Supabase, spiegate","\u002Fblog\u002Fsupabase-new-api-keys","2026-08-12",{"title":5,"description":382},"blog\u002Fsupabase-new-api-keys",[413,414,415],"Supabase ora emette chiavi sb_publishable_ e sb_secret_. Sostituiscono anon e service_role e fanno esattamente gli stessi due lavori.","La chiave pubblicabile sta bene nella tua app. Quella segreta mai, e ora le distingui leggendo i primi caratteri.","Le tue vecchie chiavi funzionano ancora oggi. Supabase ha detto che tutti i progetti dovranno abbandonarle a fine 2026.","AgTADPdTF7Mrvykyz0gxA_Sxe7wGGBDpGxAX3GVepD8",1787826051022]