Seu app Base44 é seguro?
O Base44 mantém seu banco de dados fora da internet, o que tira o maior risco dos apps feitos às pressas. O que sobra é uma lista curta, e quase sempre a mesma.

Os logotipos são propriedade de seus respectivos donos e são exibidos apenas para indicar compatibilidade.
Em resumo
- O Base44 não expõe seu banco de dados à internet. O erro que vaza a maioria dos apps feitos às pressas não está disponível para você, e isso é uma vantagem de verdade.
- O risco muda para o que o navegador enxerga: uma API que responde a qualquer site e o seu código original publicado ao lado do app. Esses dois aparecem em quase todo app Base44 que a gente analisa.
- Ninguém consegue verificar um banco do Base44 por fora, a gente incluída. Se você conectou um projeto Supabase seu, essa parte dá para verificar e vale a pena.
O Base44 faz uma coisa que os outros criadores não fazem, e vale saber antes de sair procurando problema: seus dados nunca respondem direto à internet.
Seu app pede algo ao Base44, o Base44 pede ao banco de dados, e a resposta volta pelo mesmo caminho. Não existe endereço que um estranho possa digitar. Na maioria dos apps feitos às pressas, a maior causa de dados vazados é uma tabela que qualquer um com o endereço do projeto consegue ler, e no Base44 esse erro nem está disponível para você.
E aqui está a parte que guia após guia conta errado: isso não deixa o seu app seguro, deixa ele seguro num aspecto específico. O risco muda de lugar, e para onde ele vai é previsível o bastante para a gente te contar agora, antes de você analisar qualquer coisa.
O que o Base44 mantém fora da internet por você
O estoque, para seguir com a comparação óbvia.
Pense no seu app como uma loja. Tudo o que o navegador de um visitante baixa é a vitrine, e ela é entregue inteira para qualquer um que abra a página: um navegador não consegue mostrar algo que não foi mandado para ele. Atrás fica o estoque, os seus dados. Na maioria dos criadores o estoque é outro prédio com endereço próprio na mesma rua, e se estranhos conseguem entrar depende de uma configuração que talvez você nunca tenha visto. No Base44 não existe porta para a rua.
Na prática isso quer dizer que não há nada para colar num navegador. Num app com Supabase atrás, qualquer um consegue tirar o endereço do projeto do seu pacote, somar o nome de uma tabela e ver o que volta. Faça o mesmo num app Base44 e o único endereço que você acha é o seu, no seu próprio domínio, respondendo aquilo para o que o seu app foi escrito.
Isso aparece nas notas. Entre os apps Base44 da nossa análise de apps no ar, quase todos tiram A ou B, e as falhas que puxam outros criadores até um D quase não aparecem.
Também tem uma consequência honesta: por fora ninguém consegue verificar isso, a gente incluída. Uma verificação vinda da internet só consegue testar portas que existem. Aqui não tem nenhuma, então não há o que relatar, e um scanner que imprimisse "banco de dados: seguro" com base nisso estaria inventando um resultado.
Uma chave no seu app Base44 é problema?
Normalmente não, e os dois tipos são quase iguais na aparência.
Uma chave publicável nomeia um projeto e não faz mais nada. Ela foi feita
para ser lida, e encontrá-la não é um achado. Uma chave secreta, do tipo
sb_secret_…, service_role ou sk_live_…, passa por cima de todas as regras
que você escreveu e consegue ler e mudar tudo.
O Base44 guarda as próprias credenciais no servidor, então uma chave que está no seu app normalmente nem é do Base44. Ela vem de algo que você conectou: uma chave de mapas, de analytics ou de pagamento colada para fazer uma função rodar. A mais comum que encontramos em apps Base44 é uma chave da API do Google, que vale entender em vez de entrar em pânico, porque uma sem restrição pode ser gasta por estranhos. Ler qual chave você tem leva mais ou menos um minuto.
Se você achar mesmo um segredo, a ordem importa. Troque a chave onde ela foi emitida, no Google Cloud ou na Stripe ou de onde tiver vindo, e tire do seu código depois disso. Apagar a linha primeiro não fecha nada: o valor antigo já está em toda cópia em cache do seu site e no que um robô guardou semana passada.
A configuração que está errada em quase todo app Base44
Não é chave, e não é o banco de dados. É com quem a sua API topa conversar.
Um navegador normalmente não deixa um site ler os dados de outro. É essa regra
que impede que uma página que você abre chame o seu banco e mostre o seu saldo
sem você ver. Um cabeçalho de resposta chamado CORS derruba a regra, e em *
ele derruba para todo mundo: um site do qual você nunca ouviu falar pode chamar
a API do seu app pelo navegador do seu visitante e ler o que volta.
Nos apps Base44 que a gente analisou esse é disparado o achado mais comum. É também o mais contestado, e a contestação é justa, então aqui vai a versão honesta. Um coringa na frente de um endereço que exige login é um achado fraco, porque o outro site continua sem credencial nenhuma para mandar. Um coringa na frente de um endereço que responde a qualquer um é a coisa séria, e mais ou menos metade dos apps Base44 que analisamos tem pelo menos um endereço que devolve dados a um pedido simples, sem ninguém logado. São dois problemas diferentes debaixo de um rótulo só, e o segundo é o que vale procurar.
Nenhum dos dois é erro seu. Um coringa é o que uma ferramenta de build entrega quando ninguém disse outra coisa a ela, normalmente para que o domínio de prévia e o domínio no ar funcionem os dois enquanto você constrói. O texto curto tem a solução, que é colocar o seu próprio domínio no lugar do asterisco.
Seu código original, publicado ao lado do app
O segundo achado mais comum, e o que dá para conferir sem ferramenta nenhuma.
Um source map é um arquivo que transforma o JavaScript comprimido que o navegador roda de volta no que você escreveu, com os nomes de arquivo originais, os comentários e a estrutura de pastas inteiros. As ferramentas de build geram isso para que um erro em produção aponte para uma linha de verdade em vez da coluna 4.812 de um único arquivo enorme. Essa parte é útil mesmo. Publicar ao lado do app é a parte que te custa alguma coisa.
Mais ou menos três em cada cinco apps Base44 que analisamos publicam os seus. Nenhum dado vaza por causa disso, e o seu app não se comporta diferente em nada, que é exatamente por que passa despercebido por meses. O que muda é o esforço em todo o resto: garimpar um endpoint dentro de um pacote minificado é trabalho lento e chato, e ler o seu próprio código não é trabalho nenhum. Todo outro achado desta página fica mais barato de encontrar assim que o seu código está legível.
Conferir leva menos de um minuto. Abra o seu app no ar, aperte F12 e olhe o painel Sources. Se a árvore de arquivos ali parece o seu projeto, com os nomes que você deu, os maps saíram junto com a publicação, e o texto longo diz o que mudar.
Se você plugou um banco de dados seu
Aí a vantagem lá do começo desta página não vale para essa parte, e as regras de sempre voltam.
Mais ou menos um quarto dos apps Base44 que analisamos aponta para um projeto Supabase próprio. Esse projeto responde direto à internet, igualzinho ao de qualquer outro criador, então o Row Level Security agora é seu: um interruptor por tabela que decide linha a linha quem pode ler o quê.
Duas coisas decidem se você tem. O Supabase liga por padrão nas tabelas criadas no Table Editor do painel, e não nas criadas rodando SQL, que é como a maioria das configurações geradas cria. E o interruptor é só metade, porque uma política que permite todo mundo deixa a tabela aberta enquanto o painel diz que está protegida.
Com o armazenamento é igual, e é fácil esquecer, porque ele fica numa parte do painel diferente das regras de tabela. Um bucket marcado como público pode ser listado e baixado por qualquer um que saiba que ele existe, tendo ou não o seu app um link para algum arquivo dentro, e as configurações que decidem isso merecem uma lida com calma.
Como verificar seu app Base44 em uns dez minutos
Pergunte o que a sua API diz para outros sites. É o que tem mais chance de estar errado e o que ninguém olha, porque nada no seu app se comporta mal quando isso está aberto demais.
Abra seu app no ar com F12 e leia o painel Sources. Se os seus arquivos estão listados ali com os nomes que você deu, qualquer outra pessoa também consegue listá-los.
Leia qualquer chave que esteja no app. Para cada uma, pergunte se você a colocaria na sua página inicial. Se a resposta for não, o lugar dela é num servidor, e ela precisa ser trocada na origem antes de sair do código.
Abra Authentication → Policies, se você conectou um projeto Supabase seu. Qualquer tabela listada com Row Level Security desligada responde a quem tiver o endereço do projeto, e esse endereço está no seu app.
Depois olhe por fora. Os passos acima dizem o que está configurado. O que um estranho realmente alcança é outra pergunta, e é a que a nossa verificação gratuita responde. Ela lê o seu site no ar como um visitante e te dá uma nota em uns 20 segundos, sem cadastro: verifique seu app.
O que fazer
- O Base44 mantém seu banco de dados fora da internet. A maior causa de dados vazados em apps feitos às pressas não está disponível para você.
- Por fora ninguém consegue verificar isso, a gente incluída. Sem porta não há resultado, e não haver resultado não é um certinho verde.
- O risco muda para o navegador: uma API que responde a qualquer site e o seu código-fonte publicado ao lado do app.
- Um coringa na frente de um endereço que não pede login é a versão que importa, e mais ou menos metade desses apps tem um.
- Uma chave no seu pacote costuma vir de um serviço que você conectou. Troque na origem, depois apague do código.
- Plugue um projeto Supabase seu e as regras normais de Row Level Security e de armazenamento valem para ele por inteiro.
Comece pelas duas que quase sempre valem a pena: o que a sua API diz para outros sites, e se o seu código original saiu junto com o app. Depois a checklist de segurança de 10 minutos cobre o resto.
O que pode dar errado de verdade num app Base44
Na ordem em que a gente realmente vê nos apps Base44, que não é a ordem que você imaginaria. Nada disso quer dizer que você fez algo errado.
Sua API responde a qualquer site que perguntar
Esse é o caso comum no Base44, disparado. Normalmente o navegador não deixa um site ler os dados de outro, e uma configuração chamada CORS é o que derruba essa regra. Em "*", ela cai para todo mundo: uma página da qual você nunca ouviu falar pode chamar a API do seu app pelo navegador de um visitante. O Reeve verifica o que o seu app diz aos navegadores sobre isso.
Seu código original foi publicado junto com o app
Um source map é uma cópia legível do código que você escreveu, publicada ao lado da versão que o navegador roda. Útil enquanto você constrói e um presente para um estranho depois que está no ar: transforma "mexer num pacote minificado" em "ler o app". Sozinho ele não vaza dados. Ele deixa todo o resto mais fácil de achar.
Cabeçalhos de segurança faltando
Um punhado de cabeçalhos diz ao navegador como proteger quem visita: não adivinhar tipos de arquivo, não deixar outro site emoldurar esta página, não vazar o endereço completo na saída. Um a um são pequenos. Juntos, decidem o quanto alguém consegue fazer com o que mais encontrar.
Uma chave de algo que você mesmo conectou
O Base44 guarda as próprias credenciais no servidor, então as chaves que aparecem costumam vir de um serviço que você conectou: uma chave de mapas, de analytics ou de pagamento colada para fazer algo funcionar. Algumas chaves são feitas para ficar no navegador e não tem problema. O Reeve lê o código carregado do seu app, encontra as chaves e diz qual é qual, sem nunca guardar os valores reais.
Um banco de dados que você mesmo conectou
Se você plugou um projeto Supabase seu em vez de usar os dados embutidos do Base44, também assumiu as regras dele. O Row Level Security decide quem pode ler cada linha, e vem desligado nas tabelas criadas rodando SQL. Esse é o único caminho pelo qual o velho problema do banco aberto chega mesmo assim a um app Base44. O Reeve verifica contando linhas, nunca lendo.
Arquivos que qualquer um pode listar
Os uploads caem em buckets de armazenamento, e um bucket público deixa qualquer um listar e baixar o que está lá dentro: notas fiscais, documentos, fotos privadas. O Reeve verifica se os seus buckets são listáveis. Ele nunca baixa arquivo de ninguém.
O que o Reeve é e o que ele não é
O Reeve é uma verificação gratuita, só de leitura, feita por fora, como um inspetor que testa as portas sem entrar. Ele acha rápido os erros comuns e graves. Não é uma auditoria de segurança completa, e uma nota boa não é garantia; quer dizer que as portas óbvias estão fechadas.
Apps Base44 tiram notas melhores que a maioria, e isso é um resultado de verdade, não um elogio: a plataforma fica com a parte que costuma dar errado. O que sobra é uma lista curta e bem parecida entre um app e outro, e isso é uma boa notícia, porque lista curta dá para terminar. E se você preferir que vigiar não seja tarefa sua, deixa ser a nossa.
Quer resolvido, não só verificado?
O Reeve Care fica de olho no seu app, faz cópias dos seus dados e ajuda a consertar o que quebrar, para você seguir construindo em vez de se preocupar.
Conheça o Reeve CarePerguntas frequentes
Um app Base44 é mais seguro do que um feito em outro lugar?
Numa coisa específica, é. Seu banco de dados não é alcançável pela internet, então você não consegue cometer o erro que expõe a maioria dos apps feitos às pressas: uma tabela que qualquer um com o endereço consegue ler. Essa é a maior causa de dados vazados em apps como o seu, e o Base44 tira isso das suas mãos. Tudo o que o navegador enxerga continua sendo com você.
O Reeve consegue verificar meu banco de dados do Base44?
Não, e ninguém consegue por fora. Seus dados passam pelo backend do próprio Base44 em vez de responder direto à internet, então não existe porta para uma verificação testar. A gente diz isso na nossa página de pesquisa também, e prefere te contar a imprimir um certinho verde que não mereceu. Se você conectou um projeto Supabase seu, essa parte a gente consegue verificar.
Meu app tem uma chave de API. Isso é problema?
Depende inteiramente de qual. Algumas foram feitas para ser públicas e o seu app não funciona sem elas; outras entregam uma conta inteira. O Base44 guarda as credenciais dele no servidor, então uma chave no seu pacote costuma vir de um serviço que você conectou. O Reeve lê o tipo da chave e te diz em palavras qual você tem, sem guardar o valor.
Verificar meu app Base44 muda alguma coisa?
Não. O Reeve só olha o que já é público por fora. Nunca faz login, nunca muda nada e nunca baixa os seus arquivos. Só leitura, como conferir se a porta está trancada sem entrar.
Se meu banco de dados não é alcançável, sobra alguma coisa para se preocupar?
Sobra, mas uma lista mais curta do que a da maioria. Seu app continua rodando num navegador, e tudo o que o navegador recebe é público: o código, qualquer chave embutida nele e os endereços que ele chama. Vale verificar duas coisas: se esses endereços respondem a pedidos de outros sites, e se saiu junto com a publicação uma cópia legível do seu código-fonte.
Se ninguém consegue verificar por fora, como eu sei que meus dados estão bem?
Por dentro, que é o único lugar onde essa resposta existe. Como os pedidos passam pelo Base44 em vez de irem para um endereço público, tudo o que decide quem pode ler o quê mora no seu app e na plataforma, onde um estranho não consegue cutucar. Então as perguntas úteis são quem pode se cadastrar, o que uma pessoa cadastrada enxerga, e se alguma tela foi feita supondo que ninguém ia olhar. Uma verificação externa não responde nenhuma dessas. Ela responde a outra metade: o que alguém alcança sem sequer se cadastrar.
Minha verificação diz que minha API responde a qualquer site. Fui eu que fiz isso?
Quase certamente não de propósito. Um coringa é o que uma ferramenta de build entrega quando ninguém disse outra coisa a ela, normalmente para que o endereço de prévia e o endereço no ar funcionem os dois enquanto você constrói, e ele sobrevive até a produção porque nada no seu app quebra quando está aberto demais. O que decide o quanto isso pesa é o endereço que está atrás: se ele pede login, o achado é fraco. Se ele responde a qualquer um, é a versão para resolver esta semana.
Conectei um projeto Supabase meu ao meu app Base44. Isso muda alguma coisa?
Muda o mais importante. O seu projeto responde direto à internet, então a configuração de Row Level Security por tabela agora é sua, e ela vem desligada em qualquer tabela criada rodando SQL. Esse é o único caminho pelo qual o clássico problema do banco aberto chega a um app Base44, e vale dez minutos do seu tempo.