Basi della sicurezza
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.

In breve
- Replit è sicuro? Come host, non era lì che stavano i rilievi. Ognuna delle nove app su 3.042 valutate D o F ci è arrivata per qualcosa dentro l’app stessa.
- Il rilievo tipico di Replit è un’API propria: 1.050 app su 3.037 avevano una route che consegnava dati a uno sconosciuto senza login, perché un’app Replit di solito esce con il proprio server.
- Di 219 app con qualcosa a forma di chiave nel codice scaricato, tre tenevano una chiave che addebita un account. 2.789 delle 3.042 hanno preso una A.
Hai costruito qualcosa su Replit, funziona, e stai per metterci sopra persone vere. A un certo punto di quella settimana hai scritto «replit è sicuro» in una casella di ricerca, e quello che è tornato era o una pagina sulle certificazioni di Replit o una pagina su un agente IA che ha cancellato un database. Nessuna delle due ha detto una parola sull’app che stai per pubblicare.
Ecco la parte che la maggior parte di quelle risposte sbaglia: «Replit è sicuro?» sono tre domande in una frase sola, e quella che decide se degli sconosciuti possono leggere i dati dei tuoi utenti è quella che quasi nessuno misura.
Noi possiamo misurarla. Tra il 12 e il 14 agosto 2026 abbiamo passato 30.998 app online per gli stessi nove controlli esterni che chiunque può lanciare gratis dalla nostra home page, e 3.042 di queste erano pubblicate su Replit. Questo è quello che è venuto fuori per loro, e dove il nostro sguardo si ferma.
Replit è sicuro?
Come host, non era lì che stavano i rilievi. Le due cose che dell’hosting possiamo vedere dall’esterno sono tornate pulite su ogni app che ha risposto, e le nove app valutate D o F ci sono arrivate tutte per qualcosa dentro l’app.
Pensa a Replit come a un negozio in affitto con un laboratorio sul retro. Il padrone di casa possiede l’edificio e la serratura della porta sulla strada. Chi ha allestito il negozio ha deciso dove vanno gli scaffali e come il retro comunica con il davanti. E quello che un passante può raggiungere dal marciapiede lo decidi tu, ogni volta che apri. Sono tre domande diverse, e una buona risposta alle prime due non dice nulla della terza.
- La piattaforma. Replit ospita la tua app come si deve: un certificato valido, un dominio che non scadrà, i secret cifrati e fuori dai tuoi file. Questo è il padrone di casa.
- L’agente. Il codice che scrive l’IA di Replit è sicuro. Questo è l’installatore, e nessuna scansione dall’esterno può vedere l’impianto.
- L’app che hai pubblicato. Quello che uno sconosciuto può raggiungere dalla strada: una chiave nel codice che un browser scarica, una route API che risponde senza login, un file che non avrebbe mai dovuto avere un URL.
I nostri controlli leggono la terza. Sulla prima, il certificato era valido su tutte le 3.028 app in cui siamo riusciti a leggerne uno, e nessun dominio su 3.042 era vicino alla scadenza. Sulla seconda non abbiamo nulla da misurare, e la sezione dedicata più in basso lo dice.
Cosa abbiamo trovato in 3.042 app Replit
Nove controlli, eseguiti dall’esterno, senza login e senza accesso all’account di nessuno. Non abbiamo mai letto una riga: dove un database ha risposto, gli abbiamo chiesto quante righe avrebbe consegnato e ci siamo fermati lì. Nessuna app è nominata qui né altrove tra le cose che pubblichiamo. Ogni quota qui sotto è calcolata sulle app su cui quel controllo ha risposto, perché un controllo che non è riuscito a finire è sconosciuto e non superato, e questa regola è il motivo per cui i denominatori si muovono. Il metodo e i dati sono nel report.
| Cosa abbiamo controllato | App Replit | Chi lo decide |
|---|---|---|
| Intestazioni di sicurezza del browser mancanti | 2.924 su 3.042 (96%) | Ciò che serve la pagina |
| Una route API che ha risposto a uno sconosciuto con dei dati | 1.050 su 3.037 (35%) | La tua app |
| Qualcosa a forma di chiave nel codice che un visitatore scarica | 219 su 3.042 (7%) | La tua app |
| Codice sorgente originale pubblicato (source map) | 168 su 3.041 (6%) | Un’impostazione di build |
| Qualsiasi sito autorizzato a chiamare la tua API | 76 su 3.037 | La tua app |
| Qualsiasi sito autorizzato a chiamarla con i cookie dei tuoi utenti | 56 su 3.037 | La tua app |
Un file privato come .env o .git/config a un URL pubblico | 7 su 3.023 | La tua app |
| Una tabella del database leggibile senza login | 4 su 3.033 | La tua app |
| Un bucket di storage che elenca i suoi file | 0 su 3.035 | La tua app |
| Certificato scaduto o non attendibile | 0 su 3.028 | Replit |
| Dominio in scadenza | 0 su 3.042 | Replit |
I voti: 2.789 A, 183 B, 61 C, 8 D e 1 F. Trentuno app non avevano nessun rilievo.
Perché «il 99% aveva un rilievo» qui dice poco
Perché 2.924 di quei rilievi sono lo stesso, ed è la riga meno urgente che un report possa contenere.
Le intestazioni di sicurezza del browser le manda ciò che serve la tua pagina. Sul dominio proprio di un builder è il builder, ed è per questo che il numero è 96% qui, 99% su Lovable e 100% su v0, e per questo ogni app sullo stesso host riceve la stessa risposta. Replit è uno dei pochi posti in cui puoi cambiarlo: se la tua app fa girare il proprio server, è quel server a mandare le intestazioni, e aggiungerle sono poche righe. Vale la pena farlo, e non è di questo che è fatta una D.
Togli quella riga, e 1.798 delle 3.042 app non avevano nulla che nascesse da ciò che era stato costruito. Le altre 1.244 sono il posto in cui vive il resto di questo articolo.
Il rilievo tipico di Replit: una route API tutta tua
La cosa più comune che abbiamo trovato e che un proprietario aveva messo lì da sé era una route sul server dell’app stessa che rispondeva a uno sconosciuto con dei dati. 1.050 app su 3.037 ne avevano almeno una.
Un’app Lovable è un front end più un database che fa girare qualcun altro.
Un’app Replit è di solito tutto il negozio: la pagina, e dietro un server che
parla con il database, nello stesso progetto e spesso scritti nella stessa
sessione. Il settimo dei nostri nove controlli legge i percorsi API scritti nel
JavaScript della tua app, /api/orders, /api/users, qualunque cosa trovi, e
chiede a ciascuno, senza login, se risponde. Su Lovable è scattato su 8 app su
18.518, perché di solito non c’è un server del proprietario a cui chiedere. Su
Replit è scattato su 1.050.
È classificato medio perché a volte è esattamente giusto così. Una route che
restituisce il tuo elenco pubblico di prodotti deve rispondere a tutti. È
sbagliato quando la route è /api/users e la risposta sono i tuoi utenti con i
loro indirizzi e-mail, e lo scopri perché chiunque può aprire quell’indirizzo
in una scheda e leggerlo. Una route che deve essere privata ha bisogno di un
controllo del login, e chiunque non ce l’abbia riceve un 401.
Nel negozio, questa è la porta sul retro che si apre dalla strada. Se hai usato Supabase, è lo stesso guasto che hai visto descritto come una tabella senza Row Level Security, in una forma diversa. Le righe si leggono perché niente tra lo sconosciuto e i dati ha chiesto chi fosse.
Due rilievi più piccoli gli stanno accanto. 76 app hanno detto a qualsiasi sito del mondo che poteva chiamare la loro API, e altre 56 lo hanno permesso con i cookie di login del visitatore allegati, che è la versione che lascia un altro sito agire come il tuo utente e quella che raramente è giusta.
Di cosa è fatto «il 7% ha spedito un secret»
Soprattutto di chiavi Google. 219 delle 3.042 app avevano qualcosa a forma di chiave nel codice che un visitatore scarica, e 200 di queste erano una chiave API di Google, che di solito va bene una volta che è stata limitata al tuo dominio. Trentadue portavano un valore a forma di chiave che non siamo riusciti ad attribuire a un fornitore. Tre app tenevano una chiave che addebita un account direttamente: una chiave OpenAI, Anthropic o AWS.
Tre su 3.042 è raro. È anche il rilievo che costa soldi da solo, la chiave della cassa lasciata sul bancone, e tende a farsi vedere come una fattura di consumo che arriva prima che qualcuno se ne sia accorto. Uno scanner che confronta forme stamperebbe tutte e 219 come problemi; noi leggiamo cosa può fare ciascuna chiave, perché l’alternativa è insegnarti a ignorare l’avviso il giorno in cui conta.
Su Replit la strada che una chiave fa per entrare nel bundle è abbastanza
particolare da avere un articolo suo. Lo
strumento Secrets tiene un valore fuori dai tuoi file, e lo fa bene. Non può
tenerlo fuori dal browser se è codice del browser a leggerlo, e il modo in cui
la gente lo fa funzionare è rinominare la variabile VITE_ o NEXT_PUBLIC_,
che è un’istruzione allo strumento di build di pubblicarla.
I due che sistemi con un’impostazione
Le source map e un file privato finito dove non doveva. Entrambi si decidono in come il progetto viene costruito, ed entrambi sono un’impostazione e non una riscrittura.
168 app pubblicavano le source map, il che significa che i file originali dietro l’app, commenti compresi, si leggono dagli strumenti per sviluppatori di qualsiasi browser. Su Replit la configurazione di build è nel tuo progetto, quindi l’interruttore è tuo; cosa espone e cosa non espone una map pubblicata vale la pena leggerlo prima di decidere che non conta.
Sette app servivano un file privato da un URL qualunque: un .env, un
.git/config. Cinque delle nove app valutate D o F avevano questo rilievo, ed è
la strada più corta verso una brutta giornata di tutta la lista, perché un
.env a un URL è ogni chiave che contiene in una richiesta sola. In una finestra
privata, apri il tuo indirizzo pubblicato con /.env in fondo. Deve fallire. Se
mostra del testo, ruota oggi ogni chiave in quel file, poi togli il file da ciò
che pubblichi.
Il codice che scrive l’agente di Replit è sicuro?
Non l’abbiamo misurato, e nessuna scansione dall’esterno può farlo. Quello che una scansione vede è il risultato: le 1.050 route aperte e le tre chiavi che addebitano le ha scritte qualcuno, un agente o una persona, e le ha pubblicate.
Quello che è agli atti è un evento. Nel luglio 2025 l’agente di Replit ha cancellato un database di produzione nel mezzo di una sessione in cui gli era stato detto di non cambiare nulla, e il CEO di Replit lo ha riconosciuto pubblicamente; separare i database di sviluppo da quelli di produzione è stata parte della risposta dell’azienda. Quello che ne segue per te è lo stesso su ogni builder con un agente dentro: tieni l’agente lontano dal database in produzione, e tieni una copia dei tuoi dati da qualche parte dove l’agente non arriva.
Dove vive quella copia dipende da dove sono i tuoi dati. Se la tua app Replit li tiene in Supabase, è ciò che Care conserva. Se sono nel database di Replit stesso, non possiamo farne il backup, e la cosa da leggere prima di averne bisogno è cosa offre lo strumento database di Replit per un ripristino. Solo 14 delle 3.042 app Replit scansionate nominavano un progetto Supabase, quindi per la maggior parte vale il secondo caso.
Il controllo in cinque minuti della tua app Replit
Ognuno è un URL che apri o una ricerca che lanci. Usa una finestra privata, così il tuo login non risponde al posto di uno sconosciuto.
- Apri il tuo indirizzo pubblicato con
/.envin fondo, poi con/.git/config. Entrambi devono fallire. Se uno dei due mostra del testo, ruota oggi ogni chiave che contiene. - Apri allo stesso modo una delle tue route API, una che non vorresti far leggere a uno sconosciuto. Se risponde, quella route ha bisogno di un controllo del login.
- Cerca
VITE_eNEXT_PUBLIC_nel tuo progetto. Ogni risultato è un valore che il tuo strumento di build pubblica apposta, e ognuno deve essere una chiave che era sicuro pubblicare. - Apri la tua app online, poi la scheda Sources degli strumenti per sviluppatori del browser. Se riesci a leggere i tuoi file originali con i commenti, le source map sono attive.
- Oppure lascia fare alla scansione. Esegue questi quattro e altri cinque dall’esterno, impiega circa 20 secondi, non richiede un account, e stampa «Impossibile controllare» per tutto ciò a cui non ha potuto rispondere invece di una spunta: scansiona la tua app.
Cosa cambia dopo che pubblichi di nuovo?
Qualsiasi cosa. Pubblicare su Replit è un gesto solo, quindi una modifica è online nel momento in cui la fai, e non c’è nessun passaggio di deploy tra te e internet a fermare una route che ha perso il suo controllo del login o una chiave incollata a mezzanotte per superare una build che falliva. Una scansione fatta il mese scorso descrive l’app del mese scorso.
Reeve Monitor è costruito per questa forma di app: qualcuno che passa davanti al negozio ogni ora e prova le porte. Rilancia tutti e nove i controlli ogni ora su fino a tre app, sorveglia la disponibilità ogni 60 secondi, ti avvisa quando un risultato cambia invece di aspettare che tu vada a guardare, e manda un report mensile. Costa €12 al mese a listino, con sette giorni gratis prima di addebitarti qualcosa; la pagina dei prezzi a volte sta sotto la cifra scritta qui e mai sopra. Monitor sorveglia e niente altro, che per un’app Replit è di solito la metà giusta: Care, il nostro piano di backup, conserva soltanto una copia di un database Supabase, e la maggior parte delle app Replit tiene i dati da un’altra parte.
Cosa fare questa settimana
Cosa fare
- Apri
/.enve/.git/configsul tuo indirizzo pubblicato in una finestra privata. Entrambi devono fallire. - Apri le tue route API senza login. Qualsiasi route che risponde con dati privati ha bisogno di un controllo del login, e di un 401 per tutti gli altri.
- Cerca
VITE_eNEXT_PUBLIC_nel progetto. Ogni risultato è pubblicato apposta e deve essere una chiave che era sicuro pubblicare. - Disattiva le source map nella configurazione di build, a meno che tu non voglia i file originali leggibili dal browser.
- Tieni l’agente lontano dal database in produzione, e tieni una copia dei tuoi dati da qualche parte dove non arriva.
La guida passo passo per questa piattaforma è la tua app Replit è sicura?, e la checklist di sicurezza in 10 minuti copre ciò che vale la pena confermare su qualsiasi app appena lanciata.
FAQ
Replit è sicuro per un prodotto vero?
Come host, niente nelle 3.042 app Replit online che abbiamo scansionato puntava all’hosting: ogni certificato che siamo riusciti a leggere era valido e nessun dominio era vicino alla scadenza. I rilievi che hanno deciso un voto stavano tutti dentro l’app che ciascun proprietario ha pubblicato, e hanno la stessa forma su ogni builder che abbiamo misurato. Se il tuo prodotto è sicuro da far girare lì dipende da cosa la tua app consegna a un visitatore, ed è una cosa che puoi controllare in cinque minuti circa.
I Replit Secrets sono davvero segreti?
Per il lavoro che fanno, sì. Il valore è cifrato e tenuto fuori dai file del progetto, quindi condividere o forkare il progetto non lo consegna. Quello che lo strumento non può decidere è dove la tua app porta il valore dopo. Una chiave letta da codice che gira sulla macchina di Replit resta lì. Una chiave letta da codice che gira nel browser del visitatore viene incorporata in ciò che pubblichi, ovunque fosse conservata, e una variabile chiamata VITE_ o NEXT_PUBLIC_ è esattamente questo.
Le persone possono vedere il mio codice sorgente su Replit?
La metà browser, sempre, perché un browser non può disegnare una pagina che non gli è stata inviata. Se la vedono come i file originali che hai scritto o come output compresso dipende dalle source map, che 168 delle 3.041 app Replit controllate stavano pubblicando. Il tuo codice server resta su Replit, a meno che un file privato come .env o .git/config non abbia ricevuto un URL pubblico, cosa che 7 app su 3.023 avevano fatto.
Un’app Replit pubblicata è sicura per impostazione predefinita?
Non c’è un’impostazione predefinita che la renda sicura e nessuna che la renda pericolosa. 2.789 delle 3.042 app scansionate hanno preso una A. Quelle che non l’hanno presa avevano un rilievo nato da ciò che era stato costruito: una route sul proprio server che rispondeva senza login, una chiave nel codice scaricato, o un file privato a un indirizzo pubblico. Niente nell’hosting ha prodotto una D o una F.
Qual è il problema di sicurezza più comune nelle app Replit?
Lasciando da parte le intestazioni, che mancano a quasi ogni app su ogni builder, è una route API che risponde a uno sconosciuto con dei dati. 1.050 delle 3.037 app Replit su cui quel controllo ha potuto rispondere ne avevano almeno una. Un’app Replit di solito porta con sé il proprio server, quindi ha route proprie da lasciare aperte, dove un’app Lovable in genere non ne ha.