Pular para o conteúdo

Noções de segurança

O Replit é seguro? O que vimos em 3.042 aplicativos Replit no ar

O Replit é seguro? Passamos 3.042 aplicativos Replit no ar por nove verificações externas. Os achados estavam no aplicativo publicado, não no host.

Vlad Tkachenko12 min de leitura
O logotipo do Replit sobre um azulejo branco, uma seta para uma página com um servidor atrás, e outra seta para três visitantes.

Em resumo

  • O Replit é seguro? Como host, não era onde os achados estavam. Cada um dos nove aplicativos de 3.042 com nota D ou F chegou lá por algo dentro do próprio aplicativo.
  • O achado típico do Replit é uma API própria: 1.050 de 3.037 aplicativos tinham uma rota que entregava dados a um estranho sem login, porque um aplicativo Replit costuma sair com o próprio servidor.
  • De 219 aplicativos com algo em forma de chave no código baixado, três guardavam uma chave que cobra de uma conta. 2.789 dos 3.042 tiraram A.

Você construiu algo no Replit, funciona, e está prestes a colocar pessoas de verdade nele. Em algum momento dessa semana você digitou «o replit é seguro» em uma caixa de busca, e o que voltou foi ou uma página sobre as certificações do Replit ou uma página sobre um agente de IA que apagou um banco de dados. Nenhuma das duas disse uma palavra sobre o aplicativo que você está prestes a publicar.

Aqui está a parte que a maioria dessas respostas erra: «o Replit é seguro?» são três perguntas em uma frase só, e a que decide se estranhos conseguem ler os dados dos seus usuários é a que quase ninguém mede.

Nós conseguimos medir. Entre 12 e 14 de agosto de 2026 passamos 30.998 aplicativos no ar pelas mesmas nove verificações externas que qualquer pessoa pode rodar de graça na nossa página inicial, e 3.042 deles estavam publicados no Replit. Isto é o que voltou para esses, e onde a nossa visão para.

O Replit é seguro?

Como host, não era onde os achados estavam. As duas coisas que conseguimos ver da hospedagem de fora voltaram limpas em cada aplicativo que respondeu, e os nove aplicativos com nota D ou F chegaram lá todos por algo dentro do aplicativo.

Pense no Replit como uma loja alugada com uma oficina nos fundos. O dono do imóvel é dono do prédio e da fechadura da porta da rua. Quem montou a loja decidiu onde vão as prateleiras e como os fundos se ligam à frente. E o que um passante consegue alcançar da calçada é você quem decide, toda vez que abre. São três perguntas diferentes, e uma boa resposta às duas primeiras não diz nada sobre a terceira.

  1. A plataforma. Se o Replit hospeda o seu aplicativo direito: um certificado válido, um domínio que não vai vencer, secrets criptografados e fora dos seus arquivos. Esse é o dono do imóvel.
  2. O agente. Se o código que a IA do Replit escreve é seguro. Esse é o instalador, e nenhum escaneamento de fora consegue ver a fiação.
  3. O aplicativo que você publicou. O que um estranho consegue alcançar da rua: uma chave no código que um navegador baixa, uma rota de API que responde sem login, um arquivo que nunca deveria ter tido uma URL.

As nossas verificações leem a terceira. Sobre a primeira, o certificado era válido nos 3.028 aplicativos em que conseguimos ler um, e nenhum domínio de 3.042 estava perto de vencer. Sobre a segunda não temos nada para medir, e a seção sobre isso mais abaixo diz isso.

Três perguntas dentro de uma busca só. Um escaneamento de fora lê o terceiro painel e nada nos outros dois.

O que encontramos em 3.042 aplicativos Replit

Nove verificações, rodadas de fora, sem login e sem acesso à conta de ninguém. Nunca lemos uma linha: onde um banco de dados respondeu, perguntamos quantas linhas ele entregaria e paramos ali. Nenhum aplicativo é nomeado aqui nem em nenhum outro lugar que publicamos. Cada parcela abaixo é sobre os aplicativos em que aquela verificação respondeu, porque uma verificação que não conseguiu terminar é desconhecida e não aprovada, e essa regra é o motivo de os denominadores mudarem. O método e os dados estão no relatório.

O que verificamosAplicativos ReplitQuem decide
Cabeçalhos de segurança do navegador faltando2.924 de 3.042 (96%)O que serve a página
Uma rota de API que respondeu a um estranho com dados1.050 de 3.037 (35%)O seu aplicativo
Algo em forma de chave no código que um visitante baixa219 de 3.042 (7%)O seu aplicativo
Código-fonte original publicado (source maps)168 de 3.041 (6%)Uma configuração de build
Qualquer site autorizado a chamar a sua API76 de 3.037O seu aplicativo
Qualquer site autorizado a chamá-la com os cookies dos seus usuários56 de 3.037O seu aplicativo
Um arquivo privado como .env ou .git/config em uma URL pública7 de 3.023O seu aplicativo
Uma tabela do banco de dados legível sem login4 de 3.033O seu aplicativo
Um bucket de storage que lista os próprios arquivos0 de 3.035O seu aplicativo
Certificado vencido ou não confiável0 de 3.028Replit
Domínio prestes a vencer0 de 3.042Replit

As notas: 2.789 A, 183 B, 61 C, 8 D e 1 F. Trinta e um aplicativos não tinham nenhum achado.

Uma escala para as sete. A barra cinza é decidida pela hospedagem. Cada barra turquesa veio de algo dentro do aplicativo.

Por que «99% tinham um achado» diz pouco aqui

Porque 2.924 desses achados são o mesmo, e é a linha menos urgente que um relatório pode carregar.

Os cabeçalhos de segurança do navegador são enviados pelo que serve a sua página. No domínio próprio de um builder, isso é o builder, e é por isso que o número é 96% aqui, 99% no Lovable e 100% no v0, e por isso todo aplicativo no mesmo host recebe a mesma resposta. O Replit é um dos poucos lugares em que você consegue mudar isso: se o seu aplicativo roda o próprio servidor, é esse servidor que envia os cabeçalhos, e adicioná-los são poucas linhas. Vale a pena, e não é disso que um D é feito.

Tire essa linha e 1.798 dos 3.042 aplicativos não tinham nada que viesse do que foi construído. Os outros 1.244 são onde o resto deste artigo mora.

O achado com a cara do Replit: uma rota de API própria

A coisa mais comum que encontramos e que um dono tinha colocado ali era uma rota no próprio servidor do aplicativo que respondia a um estranho com dados. 1.050 de 3.037 aplicativos tinham pelo menos uma.

Um aplicativo Lovable é um front-end mais um banco de dados que outra pessoa roda. Um aplicativo Replit costuma ser a loja inteira: a página, e atrás dela um servidor que conversa com o banco de dados, no mesmo projeto e muitas vezes escritos na mesma sessão. A sétima das nossas nove verificações lê os caminhos de API escritos no JavaScript do seu aplicativo, /api/orders, /api/users, o que encontrar, e pergunta a cada um, sem login, se ele responde. No Lovable isso disparou em 8 aplicativos de 18.518, porque em geral não há um servidor do dono para perguntar. No Replit disparou em 1.050.

O aplicativo da esquerda não tem servidor próprio para deixar aberto. O da direita tem, e é ali que estão os seus achados.

É classificado como médio porque às vezes isso é exatamente o certo. Uma rota que devolve a sua lista pública de produtos deve responder a todo mundo. Está errado quando a rota é /api/users e a resposta são os seus usuários com os endereços de e-mail, e você descobre porque qualquer pessoa pode abrir esse endereço em uma aba e ler. Uma rota que deve ser privada precisa de uma verificação de login, e todo mundo sem login recebe um 401.

Na loja, essa é a porta dos fundos que abre pela rua. Se você já usou o Supabase, é a mesma falha que viu descrita como uma tabela sem Row Level Security, com outra forma. As linhas ficam legíveis porque nada entre o estranho e os dados perguntou quem ele era.

Dois achados menores ficam ao lado. 76 aplicativos disseram a qualquer site do mundo que ele podia chamar a sua API, e outros 56 permitiram isso com os cookies de login do visitante anexados, que é a versão que deixa outro site agir como o seu usuário e a que raramente é correta.

Do que é feito «7% enviaram um secret»

Sobretudo de chaves do Google. 219 dos 3.042 aplicativos tinham algo em forma de chave no código que um visitante baixa, e 200 deles eram uma chave de API do Google, que costuma estar bem depois de ser restringida ao seu próprio domínio. Trinta e dois carregavam um valor em forma de chave que não conseguimos atribuir a um provedor. Três aplicativos guardavam uma chave que cobra de uma conta diretamente: uma chave da OpenAI, da Anthropic ou da AWS.

Três em 3.042 é raro. Também é o achado que custa dinheiro sozinho, a chave do caixa deixada no balcão, e costuma aparecer como uma fatura de uso que chega antes de alguém perceber. Um scanner que compara formas imprimiria todos os 219 como problemas; nós lemos o que cada chave consegue fazer, porque a alternativa é ensinar você a ignorar o aviso no dia em que ele importa.

No Replit o caminho que uma chave faz até o bundle é específico o bastante para ter um artigo próprio. A ferramenta Secrets mantém um valor fora dos seus arquivos, e faz isso bem. Não consegue mantê-lo fora do navegador se é código do navegador que o lê, e o jeito como as pessoas fazem isso funcionar é renomear a variável para VITE_ ou NEXT_PUBLIC_, que é uma instrução para a ferramenta de build publicá-la.

Os dois que você corrige com uma configuração

Source maps e um arquivo privado perdido. Os dois se decidem em como o projeto é construído, e os dois são uma configuração, e não uma reescrita.

168 aplicativos publicavam source maps, o que significa que os arquivos originais por trás do aplicativo, comentários incluídos, ficam legíveis nas ferramentas de desenvolvedor de qualquer navegador. No Replit a configuração de build está no seu projeto, então o interruptor é seu; o que um map publicado expõe e o que não expõe vale a leitura antes de você decidir que não importa.

Sete aplicativos serviam um arquivo privado de uma URL comum: um .env, um .git/config. Cinco dos nove aplicativos com nota D ou F tinham esse achado, e ele é o caminho mais curto para um dia ruim de toda a lista, porque um .env em uma URL é cada chave dentro dele em uma única requisição. Em uma janela privada, abra o seu endereço publicado com /.env no final. Deve falhar. Se mostrar texto, troque hoje cada chave desse arquivo e depois tire o arquivo do que você publica.

O código que o agente do Replit escreve é seguro?

Não medimos, e nenhum escaneamento de fora consegue. O que um escaneamento vê é o resultado: as 1.050 rotas abertas e as três chaves que cobram foram escritas por alguém, um agente ou uma pessoa, e publicadas.

O que está registrado é um evento. Em julho de 2025 o agente do Replit apagou um banco de dados de produção no meio de uma sessão em que tinha sido instruído a não mudar nada, e o CEO do Replit reconheceu isso publicamente; separar os bancos de dados de desenvolvimento dos de produção fez parte da resposta da empresa. O que segue disso para você é o mesmo em todo builder com um agente dentro: mantenha o agente longe do banco de dados em produção, e guarde uma cópia dos seus dados em algum lugar aonde o agente não chega.

Onde essa cópia mora depende de onde os seus dados estão. Se o seu aplicativo Replit os guarda no Supabase, é isso que o Care guarda. Se estão no banco de dados do próprio Replit, não conseguimos fazer backup dele, e o que vale ler antes de precisar é o que a ferramenta de banco de dados do Replit oferece para uma restauração. Só 14 dos 3.042 aplicativos Replit que escaneamos nomeavam um projeto do Supabase, então para a maioria vale o segundo caso.

A verificação de cinco minutos no seu próprio aplicativo Replit

Cada uma é uma URL que você abre ou uma busca que você roda. Use uma janela privada, para que o seu próprio login não responda por um estranho.

  1. Abra o seu endereço publicado com /.env no final, depois /.git/config. Os dois devem falhar. Se algum mostrar texto, troque hoje cada chave que estiver nele.
  2. Abra do mesmo jeito uma das suas próprias rotas de API, uma que você não gostaria que um estranho lesse. Se ela responder, essa rota precisa de uma verificação de login.
  3. Procure VITE_ e NEXT_PUBLIC_ no seu projeto. Cada resultado é um valor que a sua ferramenta de build publica de propósito, e cada um tem que ser uma chave que era seguro publicar.
  4. Abra o seu aplicativo no ar e depois a aba Sources das ferramentas de desenvolvedor do navegador. Se você consegue ler os seus arquivos originais com os comentários, os source maps estão ligados.
  5. Ou deixe o escaneamento fazer isso. Ele roda essas quatro e mais cinco de fora, leva uns 20 segundos, não precisa de conta, e imprime «Não foi possível verificar» para tudo o que não conseguiu responder em vez de uma marca de verificação: escaneie seu aplicativo.

O que muda depois que você publica de novo?

Qualquer coisa. Publicar no Replit é um gesto só, então uma mudança está no ar no momento em que você a faz, e não há nenhuma etapa de deploy entre você e a internet para pegar uma rota que perdeu a verificação de login ou uma chave colada à meia-noite para passar por um build que estava falhando. Um escaneamento que você rodou no mês passado descreve o aplicativo do mês passado.

Reeve Monitor foi feito para esse formato de aplicativo: alguém que passa na frente da loja a cada hora e testa as portas. Ele roda de novo as nove verificações a cada hora em até três aplicativos, vigia a disponibilidade a cada 60 segundos, avisa você quando um resultado muda em vez de esperar você olhar, e envia um relatório mensal. Custa $12 por mês no preço de lista, com sete dias grátis antes de cobrar; a página de preços às vezes fica abaixo do valor daqui e nunca acima. O Monitor vigia e nada mais, o que para um aplicativo Replit costuma ser a metade certa: o Care, nosso plano de backup, guarda somente uma cópia de um banco de dados do Supabase, e a maioria dos aplicativos Replit guarda os dados em outro lugar.

O que fazer esta semana

O que fazer

  • Abra /.env e /.git/config no seu endereço publicado em uma janela privada. Os dois devem falhar.
  • Abra as suas próprias rotas de API sem login. Qualquer rota que responda com dados privados precisa de uma verificação de login, e de um 401 para todo o resto.
  • Procure VITE_ e NEXT_PUBLIC_ no projeto. Cada resultado é publicado de propósito e tem que ser uma chave que era seguro publicar.
  • Desligue os source maps na configuração de build, a menos que você queira os arquivos originais legíveis pelo navegador.
  • Mantenha o agente longe do banco de dados em produção, e guarde uma cópia dos seus dados em algum lugar aonde ele não chega.

O guia em linguagem simples para esta plataforma é o seu aplicativo Replit é seguro?, e o checklist de segurança de 10 minutos cobre o que vale a pena confirmar em qualquer aplicativo recém-lançado.

Perguntas frequentes

O Replit é seguro para um produto de verdade?

Como host, nada nos 3.042 aplicativos Replit no ar que escaneamos apontava para a hospedagem: cada certificado que conseguimos ler era válido e nenhum domínio estava perto de vencer. Os achados que decidiram uma nota estavam todos dentro do aplicativo que cada dono publicou, e têm a mesma forma em todo builder que medimos. Se o seu produto é seguro rodando lá depende do que o seu aplicativo entrega a um visitante, e isso você confere em uns cinco minutos.

Os Replit Secrets são secretos mesmo?

Para o trabalho que fazem, sim. O valor é criptografado e mantido fora dos arquivos do projeto, então compartilhar ou fazer fork do projeto não o entrega. O que a ferramenta não consegue decidir é para onde o seu aplicativo leva o valor depois. Uma chave lida por código que roda na máquina do Replit fica lá. Uma chave lida por código que roda no navegador do visitante é embutida no que você publica, não importa onde estava guardada, e uma variável chamada VITE_ ou NEXT_PUBLIC_ é exatamente isso.

As pessoas conseguem ver o meu código-fonte no Replit?

A metade do navegador, sempre, porque um navegador não consegue desenhar uma página que não recebeu. Se elas a veem como os arquivos originais que você escreveu ou como saída comprimida depende dos source maps, que 168 de 3.041 aplicativos Replit verificados estavam publicando. O seu código de servidor fica no Replit, a menos que um arquivo privado como .env ou .git/config tenha ganhado uma URL pública, o que 7 de 3.023 aplicativos tinham feito.

Um aplicativo Replit publicado é seguro por padrão?

Não existe padrão que o torne seguro nem padrão que o torne inseguro. 2.789 dos 3.042 aplicativos que escaneamos tiraram A. Os que não tiraram tinham um achado que veio do que foi construído: uma rota no próprio servidor que respondia sem login, uma chave no código baixado ou um arquivo privado em um endereço público. Nada na hospedagem produziu um D ou um F.

Qual é o problema de segurança mais comum em aplicativos Replit?

Deixando de lado os cabeçalhos, que faltam em quase todo aplicativo de todo builder, é uma rota de API que responde a um estranho com dados. 1.050 dos 3.037 aplicativos Replit em que essa verificação conseguiu responder tinham pelo menos uma. Um aplicativo Replit costuma carregar o próprio servidor, então tem rotas próprias para deixar abertas, onde um aplicativo Lovable em geral não tem.

Escrito por

Vlad Tkachenko

Fundador da Reeve

Passo meus dias olhando apps criados com Lovable, Bolt, v0, Cursor e Replit, e a curta lista de erros que aparecem neles sem parar.

Mais sobre o autor

Leia depois

Todos os artigos

Não sabe como está o seu próprio app?

Faça um scan gratuito e receba uma nota clara de A a F em cerca de 20 segundos. Sem conta e sem cartão.

Verificar meu app grátis

Verificação externa automatizada, não uma auditoria completa. A ausência de achados não é garantia de segurança.