La tua app Replit è sicura?
Replit va bene per ospitare un'app vera? Costruire e pubblicare sono un unico passo, il che è comodo, ed è anche ciò che rende utili i controlli.

I loghi sono di proprietà dei rispettivi titolari e sono mostrati solo per indicare la compatibilità.
In breve
- Un'app Replit è sicura da ospitare, ma costruire e pubblicare sono un unico gesto: non c'è un passaggio di deploy in cui intercettare un errore.
- Replit Secrets tiene una chiave fuori dai tuoi file. Non può tenerla fuori dal browser se è il tuo codice lato browser a leggerla.
- Se i tuoi dati sono in Supabase, ciò che decide chi può leggerli è la Row Level Security, e si imposta tabella per tabella.
Replit esegue la tua app e la pubblica dallo stesso posto in cui la costruisci. È gran parte del suo fascino, e vuol dire anche che la distanza tra «ho cambiato qualcosa» e «internet può vederlo» è più o meno zero. Non c'è un passaggio di deploy separato in cui fermarsi a pensare.
Ecco il punto che guida dopo guida racconta male: conservare una chiave in un gestore di segreti non la rende privata. Il gestore decide dove il valore riposa. Il tuo codice decide dove viaggia, e se lo porta in un browser, è lì che finisce.
Che cosa consegna a un visitatore un'app Replit pubblicata
Tutta la sua facciata, sempre.
Pensala come un negozio. Le pagine, i moduli e i pulsanti della tua app sono la vetrina, consegnata per intero a ogni visitatore che carica il tuo sito: un browser non può disegnare una pagina che non gli è stata inviata. I tuoi dati vivono nel magazzino, un edificio separato su internet con il suo indirizzo e la sua serratura.
La sfumatura che sfugge su Replit è dove cade il confine. Il codice che gira sul server e quello che gira nel browser del visitatore stanno nello stesso progetto, spesso in file vicini. Un valore letto sul server resta sul server. Lo stesso valore letto da codice lato browser viene compilato in ciò che pubblichi. Replit Secrets tiene una chiave fuori dai tuoi file sorgente, il che è davvero utile, e quello che non può fare è decidere quale metà della tua app la legge.
È un male che la mia app Replit contenga una chiave?
Di solito no. Dipende da quale, e ce ne sono due che si somigliano quasi in tutto.
Una chiave pubblicabile identifica il tuo progetto e nient'altro. Supabase la
chiama sb_publishable_… nei progetti nuovi e anon in quelli più vecchi, ed è
costruita per stare in un browser. Una chiave segreta (sb_secret_…, o
service_role prima della rinomina) ignora ogni regola tu abbia impostato e
legge e scrive ogni riga di ogni tabella.
Se uno scanner ti dice che una chiave è esposta, questa è la prima cosa da stabilire, perché una delle due è un martedì qualunque e l'altra merita che ti fermi. Il controllo richiede circa un minuto.
E «nessuno conosce il mio URL» non è una difesa. Crawler automatici leggono i siti pubblici in cerca esattamente di queste stringhe, di continuo, senza la minima idea di chi tu sia.
Che cosa decide se degli estranei possono leggere i tuoi dati
Le regole sul tuo database, che non fanno affatto parte del tuo progetto Replit.
Se i tuoi dati sono in Supabase, l'impostazione è la Row Level Security: un interruttore per tabella che decide riga per riga chi può leggere cosa. Spenta, la tua chiave pubblicabile restituisce l'intera tabella a chiunque. Accesa, con una policy scritta, restituisce solo ciò che quella policy permette.
Due cose decidono se ce l'hai, e nessuna delle due è visibile dall'interno della tua app. Supabase attiva la Row Level Security per impostazione predefinita sulle tabelle create nel Table Editor del pannello, e non su quelle create eseguendo SQL, che è il modo in cui le crea un file di migrazione, o un assistente che scrive il tuo schema. E una tabella può portare l'impostazione mentre la sua policy continua a lasciare passare tutti, quindi l'interruttore da solo non limita nessuno.
Togliere una pagina dalla tua app Replit non cambia niente di tutto questo. Il magazzino non sa che la tua vetrina esiste.
Come controllare la tua app Replit in una decina di minuti
Stabilisci quale metà legge ciascun segreto. Per ogni chiave del progetto, trova il codice che la usa e decidi se quel codice gira sul server o nel browser. Tutto ciò che il browser legge è pubblicato, ovunque fosse conservato.
Carica la tua app pubblicata e apri i DevTools. La scheda Rete mostra esattamente ciò che riceve un visitatore. È la stessa vista che ha una persona esterna, e chiude la questione più in fretta della lettura dei file.
Apri Authentication → Policies in Supabase. Tutto ciò che mostra la Row Level Security come disattivata è leggibile da chiunque abbia l'indirizzo del tuo progetto.
E poi guarda davvero da fuori. È a questo che serve la nostra scansione gratuita: legge il tuo sito dal vivo come farebbe qualsiasi visitatore e ti dà un voto in una ventina di secondi, senza account: scansiona la tua app.
Cosa fare
- Su Replit, costruire e pubblicare sono un gesto solo. Non c'è un passaggio di deploy in cui intercettare un errore.
- Un gestore di segreti protegge un valore a riposo. Il codice lato browser pubblica ciò che legge, da qualunque parte venga il valore.
- Una chiave pubblicabile nella tua app è corretta.
sb_secret_…eservice_rolesono quelle da rigenerare oggi. - Le tabelle create eseguendo SQL partono senza Row Level Security, e attivarla non è la stessa cosa di scrivere una policy che limiti qualcuno.
- Un URL sconosciuto non è una protezione. I crawler non hanno bisogno di sapere chi sei per trovare il tuo sito.
Prendi la chiave che la tua app usa di più e ricostruisci quale metà del tuo progetto la legge: server o browser. Quella sola risposta ti dice più di qualsiasi quantità di lettura, e la checklist di sicurezza in 10 minuti copre il resto della superficie una volta che ce l'hai.
Cosa può davvero andare storto con un'app Replit
Niente di tutto questo significa che hai fatto qualcosa di sbagliato: sono i normali effetti collaterali del costruire in fretta. Ecco cosa vale la pena controllare:
Una chiave segreta nel tuo codice invece che nei Replit Secrets
Replit ti dà un gestore di Secrets così le chiavi restano fuori dal tuo codice. Ma è allettante incollare una chiave direttamente in un file per farlo funzionare, e se quel file gira nel browser, o il tuo Repl è pubblico, chiunque può leggerla. Reeve trova le chiavi nel codice caricato della tua app e ti dice quali sono sicure da esporre e quali vanno spostate.
Un Repl pubblico che espone il tuo sorgente (e le chiavi)
Su molti piani, i Repl sono pubblici per impostazione predefinita, il che significa che il tuo codice, e qualsiasi cosa scritta a codice fisso, può essere letto da chiunque abbia il link. Reeve controlla cosa espone dall'esterno la tua app pubblicata, così sai se ci sono dettagli privati visibili.
Il tuo database lasciato aperto (RLS disattivato)
Se la tua app conserva dati (nel database di Replit, in Supabase o in un altro Postgres), di solito c'è una regola su chi può leggere o modificare ogni riga. Se è disattivata o mal configurata, le tue tabelle possono essere aperte a chiunque trovi l'indirizzo. È il problema serio più comune, e si nasconde finché non controlli.
Un file .env o di configurazione esposto
Le chiavi spesso vivono in un file .env che non dovrebbe essere pubblicato. A volte finisce comunque raggiungibile sul sito pubblicato, il che è una scorciatoia a tutto ciò che è sensibile. Reeve controlla se il tuo è accessibile senza che tu lo sappia.
Source map lasciate attive
Una «source map» rivela il codice originale della tua app a chiunque guardi. Pratica mentre costruisci, ma in produzione dà agli estranei una copia leggibile di come funziona la tua app e rende altre falle più facili da trovare. Reeve controlla se le tue sono esposte.
Header di sicurezza mancanti ed endpoint aperti
Piccole impostazioni che dicono ai browser come proteggere i tuoi visitatori, più il fatto che i tuoi endpoint di dati rispondano a chiunque o a qualsiasi sito. Minori da soli; insieme allargano la falla. Reeve segnala cosa manca.
Cos'è Reeve, e cosa non è
Reeve è un controllo gratuito, in sola lettura, dall'esterno, come un ispettore che prova le porte senza entrare. È veloce e coglie gli errori comuni ad alto impatto. Non è un audit di sicurezza completo, e un voto pulito non è una garanzia. Significa che le porte ovvie sono chiuse.
Replit ti dà buoni strumenti (un gestore di Secrets e controlli su se un Repl è pubblico), e aiutano davvero quando li usi. Cosa aggiunge Reeve: un controllo di ciò che la tua app pubblicata espone davvero dall'esterno, nel caso una chiave sia scivolata nel codice o un Repl sia più pubblico di quanto pensassi, spiegato con parole semplici su cui puoi agire. E se preferisci non pensarci, possiamo tenerla d'occhio noi per te.
Vuoi che sia gestito, non solo controllato?
Reeve Care continua a tenere d'occhio la tua app, fa il backup dei tuoi dati e ti aiuta a sistemare le cose quando si rompono, così puoi continuare a creare invece di preoccuparti.
Scopri Reeve CareFAQ
Le app Replit sono sicure per impostazione predefinita?
Replit ti dà i pezzi per essere sicuro (Secrets, controlli di pubblicazione), ma «per impostazione predefinita» dipende da se le chiavi sono rimaste nei Secrets, se il tuo Repl è privato e se le regole del tuo database sono attive. L'unico modo di saperlo è controllare cosa è esposto, ed è ciò che Reeve fa gratis in circa 20 secondi.
È sicuro tenere le chiavi di API nel mio codice Replit?
È molto più sicuro tenerle nei Replit Secrets che nel tuo codice. Una chiave scritta in un file può essere letta se quel codice gira nel browser o il tuo Repl è pubblico. Reeve trova le chiavi nella tua app caricata e ti dice quali sono sicure da esporre e quali vanno spostate nei Secrets.
Le persone possono vedere il mio codice se il mio Repl è pubblico?
Sì. Un Repl pubblico significa che il tuo sorgente, e qualsiasi cosa scritta a codice fisso, può essere letto da chiunque abbia il link. Reeve controlla cosa rivela dall'esterno la tua app pubblicata così puoi vedere se ci sono dettagli privati in vista.
Scansionare la mia app Replit romperà qualcosa?
No. Reeve guarda solo ciò che è già pubblico dall'esterno. Non accede mai, non cambia mai nulla e non scarica mai i tuoi file. In sola lettura, come controllare se una porta è chiusa a chiave senza entrare.
Ho messo le mie chiavi in Replit Secrets invece che nel codice. Questo le rende private?
Le tiene fuori dai tuoi file, il che vale la pena e risolve un problema reale. Non rende privato un valore una volta che la tua app lo manda a un browser. Se il codice che usa la chiave gira nel browser del visitatore, la chiave ci arriva comunque fosse conservata. Un gestore di segreti protegge un valore a riposo, ed è la tua app a portarlo fuori fino al visitatore.
La mia app Replit è piccola e nessuno conosce l'URL. Basta?
No, e il motivo è che nessuno ha bisogno di conoscerti. Crawler automatici setacciano di continuo i siti pubblici in cerca di stringhe a forma di chiave e di endpoint di database aperti, senza la minima idea di chi ne sia il proprietario. Essere sconosciuti non è la stessa cosa di essere irraggiungibili.
Dove guardo per sapere se il mio database è aperto?
Se usi Supabase, apri il progetto e vai su Authentication, poi Policies. Lì è elencata ogni tabella dello schema public con lo stato della Row Level Security. Tutto ciò che è disattivato è leggibile da chiunque possieda l'URL del tuo progetto e la tua chiave pubblicabile, entrambi dentro l'app che hai pubblicato.