[{"data":1,"prerenderedAt":321},["ShallowReactive",2],{"guide-base44-it":3},{"id":4,"title":5,"body":6,"cover":287,"coverAlt":288,"description":289,"extension":290,"faq":291,"keywords":304,"meta":310,"navigation":311,"path":312,"platform":67,"published":313,"seo":314,"stem":315,"tldr":316,"updated":313,"__hash__":320},"platform_it\u002Fis-your-base44-app-safe.md","La tua app Base44 è sicura?",{"type":7,"value":8,"toc":276},"minimark",[9,13,16,24,29,32,43,49,52,61,64,68,72,75,80,104,117,120,124,127,134,137,145,149,152,159,162,170,174,177,182,185,197,205,209,215,221,227,233,243,268],[10,11,12],"p",{},"Base44 fa una cosa che gli altri strumenti non fanno, e vale la pena saperla\nprima di mettersi a cercare problemi: i tuoi dati non rispondono mai\ndirettamente a internet.",[10,14,15],{},"La tua app chiede qualcosa a Base44, Base44 lo chiede al database, e la risposta\ntorna per la stessa strada. Non esiste un indirizzo che uno sconosciuto possa\ndigitare. Nella maggior parte delle app costruite di fretta la prima causa di\ndati usciti è una tabella leggibile da chiunque abbia l'indirizzo del progetto,\ne su Base44 quello sbaglio non è nemmeno a tua disposizione.",[10,17,18,19,23],{},"Ed ecco la parte che guida dopo guida racconta male: ",[20,21,22],"strong",{},"questo non rende la tua\napp sicura, la rende sicura su un punto preciso."," Il rischio si sposta, e dove\nsi sposta è prevedibile al punto che possiamo dirtelo adesso, prima che tu\nanalizzi qualcosa.",[25,26,28],"h2",{"id":27},"cosa-base44-tiene-fuori-da-internet-al-posto-tuo","Cosa Base44 tiene fuori da internet al posto tuo",[10,30,31],{},"Il magazzino, per restare sul paragone ovvio.",[10,33,34,35,38,39,42],{},"Pensa alla tua app come a un negozio. Tutto quello che il browser di un\nvisitatore scarica è la ",[20,36,37],{},"vetrina",", e viene consegnata per intero a chiunque\ncarichi la pagina: un browser non può mostrare qualcosa che non gli è stato\nmandato. Dietro c'è il ",[20,40,41],{},"magazzino",", i tuoi dati. Con la maggior parte degli\nstrumenti il magazzino è un edificio a parte con un proprio indirizzo sulla\nstessa strada, e se gli sconosciuti possono entrarci dipende da un'impostazione\nche forse non hai mai visto. Su Base44 non c'è nessuna porta sulla strada.",[44,45],"diagram",{"alt":46,"caption":47,"src":48},"Un'app Base44 con una freccia verso un pannello Base44, che a sua volta punta con una freccia a un cilindro del database. Sotto, il percorso di un visitatore anonimo verso quello stesso database è disegnato come una linea tratteggiata con una croce rossa.","La linea tratteggiata è il percorso che hanno gli altri strumenti. Sta qui perché tu veda cosa manca di proposito.","\u002Fguides\u002Fbase44\u002Fwhere-your-data-sits-1600x820.png",[10,50,51],{},"In pratica vuol dire che non c'è niente da incollare in un browser. Su un'app\ncon Supabase dietro, chiunque può tirare fuori l'indirizzo del progetto dal tuo\npacchetto, aggiungere il nome di una tabella e guardare cosa torna. Fai lo\nstesso su un'app Base44 e l'unico indirizzo che trovi è il tuo, sul tuo dominio,\nche risponde quello per cui la tua app è stata scritta.",[10,53,54,55,60],{},"Si vede nei voti. Tra le app Base44 della\n",[56,57,59],"a",{"href":58},"\u002Fresearch\u002Fvibe-coded-app-security-2026","nostra analisi di app pubblicate"," quasi\ntutte prendono A o B, e i guasti che trascinano altri strumenti fino a una D\nquasi non compaiono.",[10,62,63],{},"Ha anche una conseguenza onesta: dall'esterno non lo può verificare nessuno, noi\ncompresi. Un controllo da internet può provare solo porte che esistono. Qui non\nce ne sono, quindi non c'è niente da riferire, e uno scanner che su questa base\nstampasse \"database: sicuro\" si starebbe inventando un risultato.",[65,66],"guide-cta",{"platform":67},"base44",[25,69,71],{"id":70},"una-chiave-nella-tua-app-base44-è-un-problema","Una chiave nella tua app Base44 è un problema?",[10,73,74],{},"Di solito no, e i due tipi si somigliano moltissimo.",[44,76],{"alt":77,"caption":78,"src":79},"Due schede affiancate. La chiave pubblicabile, con una spunta verde, è etichettata come innocua nel browser e mostra sb_publishable_, anon e pk_live. La chiave segreta, con una croce rossa, è etichettata solo server e mostra sb_secret_, service_role e sk_live.","Si chiamano entrambe chiavi API. Solo una era pensata per essere letta.","\u002Fguides\u002Ftwo-kinds-of-key-1600x760.png",[10,81,82,83,86,87,90,91,95,96,99,100,103],{},"Una chiave ",[20,84,85],{},"pubblicabile"," nomina un progetto e non fa altro. È fatta per\nessere letta, e trovarla non è una scoperta. Una chiave ",[20,88,89],{},"segreta",", del tipo\n",[92,93,94],"code",{},"sb_secret_…",", ",[92,97,98],{},"service_role"," o ",[92,101,102],{},"sk_live_…",", aggira tutte le regole che hai\nscritto e può leggere e cambiare tutto.",[10,105,106,107,111,112,116],{},"Base44 tiene le proprie credenziali sul server, quindi una chiave che sta nella\ntua app di solito non è di Base44. Viene da qualcosa che hai collegato tu: una\nchiave di mappe, di analytics o di pagamenti incollata per far funzionare una\ncosa. La più comune che troviamo sulle app Base44 è una chiave API di Google,\nche conviene ",[56,108,110],{"href":109},"\u002Fblog\u002Fgoogle-api-key-exposed-in-frontend","capire invece che temere",",\nperché una senza restrizioni la possono spendere degli sconosciuti.\n",[56,113,115],{"href":114},"\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend","Leggere che chiave hai"," richiede\ncirca un minuto.",[10,118,119],{},"Se trovi davvero un segreto, l'ordine conta. Rigeneralo dove è stato emesso, in\nGoogle Cloud o Stripe o da dove sia arrivato, e toglilo dal codice dopo.\nCancellare prima la riga non chiude niente: il valore vecchio sta già in ogni\ncopia in cache del tuo sito e in quello che un crawler si è portato via la\nsettimana scorsa.",[25,121,123],{"id":122},"limpostazione-sbagliata-su-quasi-tutte-le-app-base44","L'impostazione sbagliata su quasi tutte le app Base44",[10,125,126],{},"Non una chiave, e non il database. È con chi la tua API è disposta a parlare.",[10,128,129,130,133],{},"Di norma un browser impedisce a un sito di leggere i dati di un altro. Quella\nregola è il motivo per cui una pagina che apri non può chiamare la tua banca di\nnascosto e metterti il saldo sullo schermo. Un'intestazione di risposta chiamata\nCORS la toglie, e impostata su ",[92,131,132],{},"*"," la toglie per tutti: un sito di cui non hai\nmai sentito parlare può chiamare l'API della tua app dal browser del tuo\nvisitatore e leggere quello che torna.",[10,135,136],{},"Sulle app Base44 che abbiamo analizzato questa è di gran lunga la scoperta più\ncomune. È anche quella su cui si discute di più, e la discussione è legittima,\nquindi ecco la versione onesta. Un jolly davanti a un indirizzo che pretende un\naccesso è una scoperta debole, perché l'altro sito comunque non ha credenziali\nda mandare. Un jolly davanti a un indirizzo che risponde a chiunque è la cosa\nvera, e circa metà delle app Base44 che abbiamo analizzato ha almeno un\nindirizzo che restituisce dati a una richiesta semplice, senza nessuno\ncollegato. Sono due problemi diversi sotto una sola etichetta, ed è il secondo\nquello da andare a cercare.",[10,138,139,140,144],{},"Nessuno dei due è uno sbaglio tuo. Un jolly è quello che uno strumento di build\nconsegna quando nessuno gli ha detto altro, di solito perché funzionino sia il\ndominio di anteprima sia quello dal vivo mentre stai costruendo. Il\n",[56,141,143],{"href":142},"\u002Fblog\u002Fcors-wildcard-security-risk","testo breve"," ha la soluzione, che consiste\nnel mettere il tuo dominio al posto dell'asterisco.",[25,146,148],{"id":147},"il-tuo-codice-originale-pubblicato-accanto-allapp","Il tuo codice originale, pubblicato accanto all'app",[10,150,151],{},"La seconda scoperta più comune, e quella che puoi controllare senza nessuno\nstrumento.",[10,153,154,155,158],{},"Una ",[20,156,157],{},"source map"," è un file che riporta il JavaScript compresso eseguito dal\nbrowser a quello che hai scritto tu, con i nomi di file originali, i commenti e\nla struttura delle cartelle intatti. Gli strumenti di build le generano perché\nun errore in produzione punti a una riga vera invece che alla colonna 4.812 di\nun unico file enorme. Quella parte è davvero utile. Pubblicarle accanto all'app\nè la parte che ti costa qualcosa.",[10,160,161],{},"Circa tre app Base44 su cinque tra quelle analizzate pubblicano le proprie. Non\nesce nessun dato per questo, e la tua app non si comporta diversamente in\nniente, che è esattamente il motivo per cui passa inosservato per mesi. Quello\nche cambia è la fatica per tutto il resto: cavare un endpoint da un pacchetto\nminificato è lavoro lento e noioso, mentre leggere il tuo codice non è lavoro\nper niente. Ogni altra scoperta di questa pagina costa meno da trovare non\nappena il tuo codice è leggibile.",[10,163,164,165,169],{},"Il controllo richiede meno di un minuto. Apri la tua app dal vivo, premi F12 e\nguarda il pannello Sources. Se l'albero dei file assomiglia al tuo progetto, con\ni nomi che hai dato tu, le map sono uscite con la pubblicazione, e il\n",[56,166,168],{"href":167},"\u002Fblog\u002Fsource-maps-exposed-in-production","testo lungo"," spiega cosa cambiare.",[25,171,173],{"id":172},"se-hai-attaccato-un-database-tuo","Se hai attaccato un database tuo",[10,175,176],{},"Allora il vantaggio in cima a questa pagina non vale per quella parte, e tornano\nle regole di sempre.",[44,178],{"alt":179,"caption":180,"src":181},"Un'app costruita con Base44 e un visitatore anonimo disegnati con frecce verso lo stesso cilindro del database. Sotto, due esiti: con RLS disattivata risponde a tutti, con RLS attivata solo alla tua app.","Questa immagine riguarda un database attaccato da te. I dati propri di Base44 non hanno una freccia che parte dallo sconosciuto.","\u002Fguides\u002Fbase44\u002Fwho-the-database-answers-1600x820.png",[10,183,184],{},"Circa un quarto delle app Base44 che analizziamo nomina un progetto Supabase\nproprio. Quel progetto risponde direttamente a internet, esattamente come per\nogni altro strumento, quindi Row Level Security adesso è affar tuo: un\ninterruttore per tabella che decide riga per riga chi può leggere cosa.",[10,186,187,188,191,192,196],{},"Due cose decidono se ce l'hai. Supabase la attiva ",[20,189,190],{},"di default per le tabelle\ncreate nel Table Editor del pannello",", e non per quelle create eseguendo SQL,\nche è come le crea la maggior parte delle configurazioni generate. E\nl'interruttore è solo metà della storia, perché una policy che permette a tutti\nlascia la tabella\n",[56,193,195],{"href":194},"\u002Fblog\u002Fsupabase-rls-on-but-table-still-public","aperta mentre il pannello la dà per protetta",".",[10,198,199,200,204],{},"Con lo storage funziona uguale e ci si dimentica facilmente, perché sta in una\nparte del pannello diversa dalle regole delle tabelle. Un bucket segnato\npubblico lo può elencare e scaricare chiunque sappia che c'è, che la tua app\npunti o no a un file dentro, e le\n",[56,201,203],{"href":202},"\u002Fblog\u002Fsupabase-storage-bucket-public","impostazioni che lo decidono"," meritano una\nlettura con calma.",[25,206,208],{"id":207},"come-controllare-la-tua-app-base44-in-una-decina-di-minuti","Come controllare la tua app Base44 in una decina di minuti",[10,210,211,214],{},[20,212,213],{},"Chiedi cosa dice la tua API agli altri siti."," È la cosa più probabilmente\nsbagliata e quella che nessuno guarda, perché nella tua app non si comporta male\nniente quando è impostata troppo larga.",[10,216,217,220],{},[20,218,219],{},"Apri la tua app dal vivo con F12 e leggi il pannello Sources."," Se i tuoi file\nsono elencati lì con i loro nomi, chiunque altro li può elencare uguale.",[10,222,223,226],{},[20,224,225],{},"Leggi ogni chiave presente nell'app."," Per ciascuna, chiediti se la metteresti\nsulla tua home page. Se la risposta è no, il suo posto è su un server, e va\nrigenerata alla fonte prima di sparire dal codice.",[10,228,229,232],{},[20,230,231],{},"Apri Authentication → Policies, se hai collegato un tuo progetto Supabase.","\nQualunque tabella elencata con Row Level Security disattivata risponde a chi ha\nl'indirizzo del progetto, e quell'indirizzo sta nella tua app.",[10,234,235,238,239,196],{},[20,236,237],{},"Poi guarda da fuori."," I passaggi qui sopra ti dicono cosa è configurato. Cosa\nriesce davvero a raggiungere uno sconosciuto è un'altra domanda, ed è quella a\ncui risponde il nostro controllo gratuito. Legge il tuo sito dal vivo come un\nvisitatore e ti dà un voto in circa 20 secondi, senza account:\n",[56,240,242],{"href":241},"\u002F#scan","controlla la tua app",[244,245,246],"key-takeaways",{},[247,248,249,253,256,259,262,265],"ul",{},[250,251,252],"li",{},"Base44 tiene il tuo database fuori da internet. La prima causa di dati usciti nelle app costruite di fretta non è a tua disposizione.",[250,254,255],{},"Dall'esterno non lo può verificare nessuno, noi compresi. Nessuna porta vuol dire nessun risultato, e nessun risultato non è una spunta verde.",[250,257,258],{},"Il rischio si sposta nel browser: una API che risponde a qualunque sito e il tuo codice sorgente pubblicato accanto all'app.",[250,260,261],{},"Un jolly davanti a un indirizzo che non chiede di accedere è la versione che conta, e circa metà di queste app ne ha uno.",[250,263,264],{},"Una chiave nel tuo pacchetto di solito viene da un servizio che hai collegato tu. Rigenerala alla fonte, poi cancellala dal codice.",[250,266,267],{},"Attacca un tuo progetto Supabase e le solite regole di Row Level Security e di storage valgono per intero anche lì.",[10,269,270,271,275],{},"Comincia dalle due che quasi sempre vale la pena sistemare: cosa dice la tua API\nagli altri siti, e se il tuo codice originale è uscito insieme all'app. Poi la\n",[56,272,274],{"href":273},"\u002Fchecklist","checklist di sicurezza da 10 minuti"," copre il resto.",{"title":277,"searchDepth":278,"depth":278,"links":279},"",3,[280,282,283,284,285,286],{"id":27,"depth":281,"text":28},2,{"id":70,"depth":281,"text":71},{"id":122,"depth":281,"text":123},{"id":147,"depth":281,"text":148},{"id":172,"depth":281,"text":173},{"id":207,"depth":281,"text":208},"\u002Fguides\u002Fbase44\u002Fis-your-base44-app-safe-it-1200x630.png","Scheda di controllo sicurezza di Reeve per le app Base44, con il logo Base44 su un riquadro bianco.","Base44 tiene il tuo database fuori da internet, il che elimina il rischio più grande delle app costruite di fretta. Resta un elenco corto, e quasi sempre lo stesso.","md",[292,295,298,301],{"q":293,"a":294},"Se il mio database non è raggiungibile, resta qualcosa di cui preoccuparsi?","Sì, ma un elenco più corto di quello della maggior parte. La tua app gira comunque in un browser, e tutto quello che il browser riceve è pubblico: il codice, le chiavi incorporate e gli indirizzi che chiama. Vale la pena controllare due cose: se quegli indirizzi rispondono a richieste di altri siti, e se insieme alla pubblicazione è uscita una copia leggibile del tuo codice sorgente.",{"q":296,"a":297},"Se dall'esterno non lo può controllare nessuno, come faccio a sapere che i miei dati stanno bene?","Da dentro, che è l'unico posto dove quella risposta esiste. Siccome le richieste passano da Base44 invece di andare a un indirizzo pubblico, tutto quello che decide chi può leggere cosa vive nella tua app e nella piattaforma, dove uno sconosciuto non può andare a tastare. Quindi le domande utili sono chi può registrarsi, cosa vede una persona registrata, e se qualche schermata è stata costruita dando per scontato che nessuno guardasse. Un controllo esterno non risponde a nessuna di queste. Risponde all'altra metà: cosa raggiunge qualcuno senza nemmeno registrarsi.",{"q":299,"a":300},"Il controllo dice che la mia API risponde a qualunque sito. Sono stato io?","Quasi certamente non di proposito. Un jolly è quello che uno strumento di build consegna quando nessuno gli ha detto altro, di solito perché funzionino sia l'indirizzo di anteprima sia quello dal vivo mentre stai costruendo, e sopravvive fino in produzione perché nella tua app non si rompe niente quando è troppo largo. Quanto pesa lo decide l'indirizzo che sta dietro: se chiede di accedere, la scoperta è debole. Se risponde a chiunque, è la versione da sistemare questa settimana.",{"q":302,"a":303},"Ho collegato un mio progetto Supabase alla mia app Base44. Cambia qualcosa?","Cambia la cosa più importante. Il tuo progetto risponde direttamente a internet, quindi l'impostazione Row Level Security tabella per tabella adesso è affar tuo, ed è disattivata di default su qualunque tabella creata eseguendo SQL. È l'unica strada per cui il classico problema del database aperto arriva a un'app Base44, e vale dieci minuti del tuo tempo.",[305,306,307,308,309],"base44 è sicuro","sicurezza base44","base44 cors","chiave api base44 esposta","source map base44",{},true,"\u002Fis-your-base44-app-safe","2026-08-30",{"title":5,"description":289},"is-your-base44-app-safe",[317,318,319],"Base44 non espone il tuo database a internet. Lo sbaglio che fa perdere dati alla maggior parte delle app costruite di fretta non è a tua disposizione, ed è un vantaggio vero.","Il rischio si sposta su quello che vede il browser: una API che risponde a qualunque sito e il tuo codice originale pubblicato accanto all'app. Questi due li troviamo su quasi ogni app Base44 che analizziamo.","Un database Base44 non lo può controllare nessuno dall'esterno, noi compresi. Se hai agganciato un tuo progetto Supabase, quella parte è controllabile e vale la pena farlo.","ApJHyhtq2GhXF_OwHaMi09S-8C1rQkoVaF2as6HXt20",1788681839677]