[{"data":1,"prerenderedAt":321},["ShallowReactive",2],{"guide-base44-pt":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_pt\u002Fis-your-base44-app-safe.md","Seu app Base44 é seguro?",{"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",{},"O Base44 faz uma coisa que os outros criadores não fazem, e vale saber antes de\nsair procurando problema: seus dados nunca respondem direto à internet.",[10,14,15],{},"Seu app pede algo ao Base44, o Base44 pede ao banco de dados, e a resposta volta\npelo mesmo caminho. Não existe endereço que um estranho possa digitar. Na\nmaioria dos apps feitos às pressas, a maior causa de dados vazados é uma tabela\nque qualquer um com o endereço do projeto consegue ler, e no Base44 esse erro\nnem está disponível para você.",[10,17,18,19,23],{},"E aqui está a parte que guia após guia conta errado: ",[20,21,22],"strong",{},"isso não deixa o seu app\nseguro, deixa ele seguro num aspecto específico."," O risco muda de lugar, e para\nonde ele vai é previsível o bastante para a gente te contar agora, antes de você\nanalisar qualquer coisa.",[25,26,28],"h2",{"id":27},"o-que-o-base44-mantém-fora-da-internet-por-você","O que o Base44 mantém fora da internet por você",[10,30,31],{},"O estoque, para seguir com a comparação óbvia.",[10,33,34,35,38,39,42],{},"Pense no seu app como uma loja. Tudo o que o navegador de um visitante baixa é a\n",[20,36,37],{},"vitrine",", e ela é entregue inteira para qualquer um que abra a página: um\nnavegador não consegue mostrar algo que não foi mandado para ele. Atrás fica o\n",[20,40,41],{},"estoque",", os seus dados. Na maioria dos criadores o estoque é outro prédio\ncom endereço próprio na mesma rua, e se estranhos conseguem entrar depende de\numa configuração que talvez você nunca tenha visto. No Base44 não existe porta\npara a rua.",[44,45],"diagram",{"alt":46,"caption":47,"src":48},"Um app Base44 com uma seta para um painel do Base44, que por sua vez aponta com outra seta para um cilindro de banco de dados. Embaixo, o caminho de um visitante anônimo até esse mesmo banco está desenhado como uma linha tracejada com um xis vermelho.","A linha tracejada é o caminho que os outros criadores têm. Ela está aqui para você ver o que falta de propósito.","\u002Fguides\u002Fbase44\u002Fwhere-your-data-sits-1600x820.png",[10,50,51],{},"Na prática isso quer dizer que não há nada para colar num navegador. Num app com\nSupabase atrás, qualquer um consegue tirar o endereço do projeto do seu pacote,\nsomar o nome de uma tabela e ver o que volta. Faça o mesmo num app Base44 e o\núnico endereço que você acha é o seu, no seu próprio domínio, respondendo aquilo\npara o que o seu app foi escrito.",[10,53,54,55,60],{},"Isso aparece nas notas. Entre os apps Base44 da\n",[56,57,59],"a",{"href":58},"\u002Fresearch\u002Fvibe-coded-app-security-2026","nossa análise de apps no ar",", quase\ntodos tiram A ou B, e as falhas que puxam outros criadores até um D quase não\naparecem.",[10,62,63],{},"Também tem uma consequência honesta: por fora ninguém consegue verificar isso, a\ngente incluída. Uma verificação vinda da internet só consegue testar portas que\nexistem. Aqui não tem nenhuma, então não há o que relatar, e um scanner que\nimprimisse \"banco de dados: seguro\" com base nisso estaria inventando um\nresultado.",[65,66],"guide-cta",{"platform":67},"base44",[25,69,71],{"id":70},"uma-chave-no-seu-app-base44-é-problema","Uma chave no seu app Base44 é problema?",[10,73,74],{},"Normalmente não, e os dois tipos são quase iguais na aparência.",[44,76],{"alt":77,"caption":78,"src":79},"Dois cartões lado a lado. A chave publicável, com um tique verde, está marcada como tranquila no navegador e mostra sb_publishable_, anon e pk_live. A chave secreta, com um xis vermelho, está marcada como só no servidor e mostra sb_secret_, service_role e sk_live.","As duas se chamam chave de API. Só uma delas foi feita para ser lida.","\u002Fguides\u002Ftwo-kinds-of-key-1600x760.png",[10,81,82,83,86,87,90,91,95,96,99,100,103],{},"Uma chave ",[20,84,85],{},"publicável"," nomeia um projeto e não faz mais nada. Ela foi feita\npara ser lida, e encontrá-la não é um achado. Uma chave ",[20,88,89],{},"secreta",", do tipo\n",[92,93,94],"code",{},"sb_secret_…",", ",[92,97,98],{},"service_role"," ou ",[92,101,102],{},"sk_live_…",", passa por cima de todas as regras\nque você escreveu e consegue ler e mudar tudo.",[10,105,106,107,111,112,116],{},"O Base44 guarda as próprias credenciais no servidor, então uma chave que está no\nseu app normalmente nem é do Base44. Ela vem de algo que você conectou: uma\nchave de mapas, de analytics ou de pagamento colada para fazer uma função rodar.\nA mais comum que encontramos em apps Base44 é uma chave da API do Google, que\nvale ",[56,108,110],{"href":109},"\u002Fblog\u002Fgoogle-api-key-exposed-in-frontend","entender em vez de entrar em pânico",",\nporque uma sem restrição pode ser gasta por estranhos.\n",[56,113,115],{"href":114},"\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend","Ler qual chave você tem"," leva\nmais ou menos um minuto.",[10,118,119],{},"Se você achar mesmo um segredo, a ordem importa. Troque a chave onde ela foi\nemitida, no Google Cloud ou na Stripe ou de onde tiver vindo, e tire do seu\ncódigo depois disso. Apagar a linha primeiro não fecha nada: o valor antigo já\nestá em toda cópia em cache do seu site e no que um robô guardou semana passada.",[25,121,123],{"id":122},"a-configuração-que-está-errada-em-quase-todo-app-base44","A configuração que está errada em quase todo app Base44",[10,125,126],{},"Não é chave, e não é o banco de dados. É com quem a sua API topa conversar.",[10,128,129,130,133],{},"Um navegador normalmente não deixa um site ler os dados de outro. É essa regra\nque impede que uma página que você abre chame o seu banco e mostre o seu saldo\nsem você ver. Um cabeçalho de resposta chamado CORS derruba a regra, e em ",[92,131,132],{},"*","\nele derruba para todo mundo: um site do qual você nunca ouviu falar pode chamar\na API do seu app pelo navegador do seu visitante e ler o que volta.",[10,135,136],{},"Nos apps Base44 que a gente analisou esse é disparado o achado mais comum. É\ntambém o mais contestado, e a contestação é justa, então aqui vai a versão\nhonesta. Um coringa na frente de um endereço que exige login é um achado fraco,\nporque o outro site continua sem credencial nenhuma para mandar. Um coringa na\nfrente de um endereço que responde a qualquer um é a coisa séria, e mais ou\nmenos metade dos apps Base44 que analisamos tem pelo menos um endereço que\ndevolve dados a um pedido simples, sem ninguém logado. São dois problemas\ndiferentes debaixo de um rótulo só, e o segundo é o que vale procurar.",[10,138,139,140,144],{},"Nenhum dos dois é erro seu. Um coringa é o que uma ferramenta de build entrega\nquando ninguém disse outra coisa a ela, normalmente para que o domínio de prévia\ne o domínio no ar funcionem os dois enquanto você constrói. O\n",[56,141,143],{"href":142},"\u002Fblog\u002Fcors-wildcard-security-risk","texto curto"," tem a solução, que é colocar o\nseu próprio domínio no lugar do asterisco.",[25,146,148],{"id":147},"seu-código-original-publicado-ao-lado-do-app","Seu código original, publicado ao lado do app",[10,150,151],{},"O segundo achado mais comum, e o que dá para conferir sem ferramenta nenhuma.",[10,153,154,155,158],{},"Um ",[20,156,157],{},"source map"," é um arquivo que transforma o JavaScript comprimido que o\nnavegador roda de volta no que você escreveu, com os nomes de arquivo\noriginais, os comentários e a estrutura de pastas inteiros. As ferramentas de\nbuild geram isso para que um erro em produção aponte para uma linha de verdade\nem vez da coluna 4.812 de um único arquivo enorme. Essa parte é útil mesmo.\nPublicar ao lado do app é a parte que te custa alguma coisa.",[10,160,161],{},"Mais ou menos três em cada cinco apps Base44 que analisamos publicam os seus.\nNenhum dado vaza por causa disso, e o seu app não se comporta diferente em nada,\nque é exatamente por que passa despercebido por meses. O que muda é o esforço em\ntodo o resto: garimpar um endpoint dentro de um pacote minificado é trabalho\nlento e chato, e ler o seu próprio código não é trabalho nenhum. Todo outro\nachado desta página fica mais barato de encontrar assim que o seu código está\nlegível.",[10,163,164,165,169],{},"Conferir leva menos de um minuto. Abra o seu app no ar, aperte F12 e olhe o\npainel Sources. Se a árvore de arquivos ali parece o seu projeto, com os nomes\nque você deu, os maps saíram junto com a publicação, e o\n",[56,166,168],{"href":167},"\u002Fblog\u002Fsource-maps-exposed-in-production","texto longo"," diz o que mudar.",[25,171,173],{"id":172},"se-você-plugou-um-banco-de-dados-seu","Se você plugou um banco de dados seu",[10,175,176],{},"Aí a vantagem lá do começo desta página não vale para essa parte, e as regras de\nsempre voltam.",[44,178],{"alt":179,"caption":180,"src":181},"Um app feito com Base44 e um visitante anônimo desenhados com setas para o mesmo cilindro de banco de dados. Embaixo, dois resultados: com RLS desligado todo mundo é respondido, com RLS ligado só o seu app.","Esta figura é sobre um banco de dados que você mesmo plugou. Os dados próprios do Base44 não têm seta vindo do estranho.","\u002Fguides\u002Fbase44\u002Fwho-the-database-answers-1600x820.png",[10,183,184],{},"Mais ou menos um quarto dos apps Base44 que analisamos aponta para um projeto\nSupabase próprio. Esse projeto responde direto à internet, igualzinho ao de\nqualquer outro criador, então o Row Level Security agora é seu: um interruptor\npor tabela que decide linha a linha quem pode ler o quê.",[10,186,187,188,191,192,196],{},"Duas coisas decidem se você tem. O Supabase liga ",[20,189,190],{},"por padrão nas tabelas\ncriadas no Table Editor do painel",", e não nas criadas rodando SQL, que é como a\nmaioria das configurações geradas cria. E o interruptor é só metade, porque uma\npolítica que permite todo mundo deixa a tabela\n",[56,193,195],{"href":194},"\u002Fblog\u002Fsupabase-rls-on-but-table-still-public","aberta enquanto o painel diz que está protegida",".",[10,198,199,200,204],{},"Com o armazenamento é igual, e é fácil esquecer, porque ele fica numa parte do\npainel diferente das regras de tabela. Um bucket marcado como público pode ser\nlistado e baixado por qualquer um que saiba que ele existe, tendo ou não o seu\napp um link para algum arquivo dentro, e as\n",[56,201,203],{"href":202},"\u002Fblog\u002Fsupabase-storage-bucket-public","configurações que decidem isso"," merecem\numa lida com calma.",[25,206,208],{"id":207},"como-verificar-seu-app-base44-em-uns-dez-minutos","Como verificar seu app Base44 em uns dez minutos",[10,210,211,214],{},[20,212,213],{},"Pergunte o que a sua API diz para outros sites."," É o que tem mais chance de\nestar errado e o que ninguém olha, porque nada no seu app se comporta mal quando\nisso está aberto demais.",[10,216,217,220],{},[20,218,219],{},"Abra seu app no ar com F12 e leia o painel Sources."," Se os seus arquivos\nestão listados ali com os nomes que você deu, qualquer outra pessoa também\nconsegue listá-los.",[10,222,223,226],{},[20,224,225],{},"Leia qualquer chave que esteja no app."," Para cada uma, pergunte se você a\ncolocaria na sua página inicial. Se a resposta for não, o lugar dela é num\nservidor, e ela precisa ser trocada na origem antes de sair do código.",[10,228,229,232],{},[20,230,231],{},"Abra Authentication → Policies, se você conectou um projeto Supabase seu.","\nQualquer tabela listada com Row Level Security desligada responde a quem tiver o\nendereço do projeto, e esse endereço está no seu app.",[10,234,235,238,239,196],{},[20,236,237],{},"Depois olhe por fora."," Os passos acima dizem o que está configurado. O que um\nestranho realmente alcança é outra pergunta, e é a que a nossa verificação\ngratuita responde. Ela lê o seu site no ar como um visitante e te dá uma nota em\nuns 20 segundos, sem cadastro: ",[56,240,242],{"href":241},"\u002F#scan","verifique seu app",[244,245,246],"key-takeaways",{},[247,248,249,253,256,259,262,265],"ul",{},[250,251,252],"li",{},"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ê.",[250,254,255],{},"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.",[250,257,258],{},"O risco muda para o navegador: uma API que responde a qualquer site e o seu código-fonte publicado ao lado do app.",[250,260,261],{},"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.",[250,263,264],{},"Uma chave no seu pacote costuma vir de um serviço que você conectou. Troque na origem, depois apague do código.",[250,266,267],{},"Plugue um projeto Supabase seu e as regras normais de Row Level Security e de armazenamento valem para ele por inteiro.",[10,269,270,271,275],{},"Comece pelas duas que quase sempre valem a pena: o que a sua API diz para outros\nsites, e se o seu código original saiu junto com o app. Depois a\n",[56,272,274],{"href":273},"\u002Fchecklist","checklist de segurança de 10 minutos"," cobre o 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-pt-1200x630.png","Cartão de verificação de segurança do Reeve para apps Base44, com o logo do Base44 num quadrado branco.","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.","md",[292,295,298,301],{"q":293,"a":294},"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.",{"q":296,"a":297},"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.",{"q":299,"a":300},"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.",{"q":302,"a":303},"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.",[305,306,307,308,309],"base44 é seguro","segurança base44","base44 cors","chave api base44 exposta","source map base44",{},true,"\u002Fis-your-base44-app-safe","2026-08-30",{"title":5,"description":289},"is-your-base44-app-safe",[317,318,319],"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.","5QB2PNyH9xa0IPwSPuHsLQSnPpVo9O8Oie-WM8C7t2M",1788681839538]