[{"data":1,"prerenderedAt":872},["ShallowReactive",2],{"blog-pt-is-base44-safe":3,"blog-index-pt":520},{"id":4,"title":5,"body":6,"category":474,"cover":475,"coverAlt":476,"description":477,"draft":478,"extension":479,"faq":480,"image":499,"keywords":500,"meta":509,"navigation":510,"ogTitle":5,"path":511,"published":512,"seo":513,"stem":514,"tldr":515,"updated":512,"__hash__":519},"blog_pt\u002Fblog\u002Fis-base44-safe.md","O Base44 é seguro? O que vimos em 5.442 apps Base44",{"type":7,"value":8,"toc":459},"minimark",[9,13,20,25,28,31,37,41,44,104,113,116,120,123,197,200,203,207,210,218,226,233,237,240,243,249,254,257,264,268,271,274,277,293,300,304,307,310,315,328,343,347,350,358,369,375,381,385,388,391,408,415,419,442],[10,11,12],"p",{},"Você construiu algo no Base44, funciona, e está prestes a colocar gente de\nverdade ali. Então você digitou \"is base44 safe\" num buscador, e o que voltou foi\no próprio blog do Base44, as próprias páginas de produto dele e dois guias\nescritos a partir delas. Nada disso é uma resposta, e o seu relatório de\nescaneamento, se você rodou um, provavelmente dizia B e te deixou igualmente no\nescuro sobre o porquê.",[10,14,15,16],{},"Parte disso nós conseguimos responder. No último ano rodamos as mesmas nove\nverificações contra todo app no ar que conseguimos encontrar, e 5.442 deles eram\napps Base44. Esta é a parte que guia após guia erra: ",[17,18,19],"strong",{},"um app Base44 e um app\nLovable falham em lugares opostos, e o relatório que o Base44 te dá, na maior\nparte, não é sobre você.",[21,22,24],"h2",{"id":23},"o-base44-é-seguro","O Base44 é seguro?",[10,26,27],{},"Dentro dessas quatro palavras se escondem três perguntas diferentes, e separá-las\né a maior parte do trabalho.",[10,29,30],{},"A primeira é se dá para confiar o seu app ao Base44 como empresa. A segunda é se\no código que ele escreve para você presta. A terceira é se o app que você\npublicou é seguro para um estranho visitar. Só a terceira dá para medir de fora,\ne no Base44 até essa volta respondida pela metade.",[32,33],"diagram",{"alt":34,"caption":35,"src":36},"Cinco barras horizontais numa mesma escala, cada uma com um pequeno símbolo à frente e um número atrás: 5.438 para cabeçalhos ausentes, 5.417 para um cabeçalho de API com curinga, 3.229 para um source map publicado, 2.705 para um endereço que responde sem login, e 95 para uma chave publicada. As quatro primeiras barras são cinza apagado e a última é turquesa.","Número de apps em 5.442, numa única escala. As barras cinza são decididas pelo Base44. A turquesa é a única linha do relatório que veio de algo que estava no app.","\u002Fblog\u002Fis-base44-safe\u002Fwhat-we-found-1600x680.png",[21,38,40],{"id":39},"o-que-encontramos-em-5442-apps-base44","O que encontramos em 5.442 apps Base44",[10,42,43],{},"Quatro achados, em quase todos os apps, e os quatro pertencem à plataforma.",[45,46,47,60],"table",{},[48,49,50],"thead",{},[51,52,53,57],"tr",{},[54,55,56],"th",{},"O que a verificação encontrou",[54,58,59],{},"Apps",[61,62,63,72,80,88,96],"tbody",{},[51,64,65,69],{},[66,67,68],"td",{},"Faltam cabeçalhos de segurança",[66,70,71],{},"5.438",[51,73,74,77],{},[66,75,76],{},"A API responde a qualquer site",[66,78,79],{},"5.417",[51,81,82,85],{},[66,83,84],{},"Um source map publicado",[66,86,87],{},"3.229",[51,89,90,93],{},[66,91,92],{},"Um endereço que responde sem login",[66,94,95],{},"2.705",[51,97,98,101],{},[66,99,100],{},"Uma chave publicada na página",[66,102,103],{},"95",[10,105,106,107,112],{},"Os dois primeiros são cabeçalhos de resposta, e num app Base44 quem coloca um\ncabeçalho de resposta é a hospedagem do Base44, não algo que você escreveu. O\nterceiro e o quarto parecem alarmantes num relatório e também não são seus: o\núnico source map que responde num app Base44 pertence ao próprio script de selo\ndo Base44, e o endereço que responde é sempre o mesmo. Em setembro de 2026\nvoltamos a 30 dos apps marcados e\n",[108,109,111],"a",{"href":110},"\u002Fblog\u002Fbase44-source-maps","escrevemos o que essas duas linhas realmente significam",",\nporque são as duas linhas mais mal lidas de um relatório do Base44.",[10,114,115],{},"Sobram 103 apps de 5.442 carregando na página algo que uma pessoa colou ali: 95\ndeles uma chave de API do Google, 11 outra sequência com cara de segredo e um uma\nchave secreta real da Stripe. Essas são as linhas de um relatório do Base44 que\nalguém colocou ali, e as únicas que alguém consegue tirar.",[21,117,119],{"id":118},"por-que-quase-todo-app-base44-tira-b","Por que quase todo app Base44 tira B",[10,121,122],{},"Porque a nota é limitada pelo pior achado, e quase todo app Base44 tem o mesmo\nachado médio.",[45,124,125,138],{},[48,126,127],{},[51,128,129,132,135],{},[54,130,131],{},"Nota",[54,133,134],{},"Base44 (5.442)",[54,136,137],{},"Lovable (18.563)",[61,139,140,151,164,175,186],{},[51,141,142,145,148],{},[66,143,144],{},"A",[66,146,147],{},"1.205 (22%)",[66,149,150],{},"15.972 (86%)",[51,152,153,156,161],{},[66,154,155],{},"B",[66,157,158],{},[17,159,160],{},"4.231 (78%)",[66,162,163],{},"370 (2%)",[51,165,166,169,172],{},[66,167,168],{},"C",[66,170,171],{},"4",[66,173,174],{},"1.814 (10%)",[51,176,177,180,183],{},[66,178,179],{},"D",[66,181,182],{},"2",[66,184,185],{},"402 (2%)",[51,187,188,191,194],{},[66,189,190],{},"F",[66,192,193],{},"0",[66,195,196],{},"5",[10,198,199],{},"Leia o formato, não a classificação. O relatório do Base44 é uma barra alta no B\ne quase nada abaixo: seis apps de 5.442 abaixo de B, e nenhum F. O Lovable tem o\noutro formato inteiro, 86% em A e cerca de um em cada oito em C ou pior. As\nmesmas nove verificações deram uma distribuição plana numa plataforma e uma\ndividida na outra, e nenhuma das duas imagens é um veredicto sobre um app\nespecífico, nem sobre o seu.",[10,201,202],{},"Então um B num app Base44 está perto do chão da plataforma, e a leitura útil do\nseu relatório não é a letra. É se a linha de chaves e a linha de segredos estão\nvazias.",[21,204,206],{"id":205},"as-95-chaves-que-eram-mesmo-suas","As 95 chaves que eram mesmo suas",[10,208,209],{},"Uma chave na sua página publicada é o único achado de um relatório do Base44 que\nninguém mais colocou ali.",[10,211,212,213,217],{},"95 dos 5.442 apps entregaram uma chave de API do Google e 11 entregaram outra\ncoisa com cara de segredo. Um entregou uma chave secreta real da Stripe, e um\noutra restrita. Uma chave de API do Google numa página geralmente é inofensiva e\nàs vezes é uma fatura, dependendo inteiramente de ter sido restringida quando foi\ncriada, e isso\n",[108,214,216],{"href":215},"\u002Fblog\u002Fgoogle-api-key-exposed-in-frontend","se confere e se resolve em cinco minutos",".\nUma chave secreta da Stripe numa página não entra nessa categoria de jeito\nnenhum: ela lê clientes, move dinheiro e emite reembolsos, e precisa ser rotada\nantes de você terminar de ler isto.",[10,219,220,221,225],{},"Se você não tem certeza de quais das suas chaves deveriam ser públicas, essa\npergunta tem resposta curta e nós escrevemos:\n",[108,222,224],{"href":223},"\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend","quais chaves pertencem a um navegador e quais nunca",".",[10,227,228,229,225],{},"Nosso escaneamento gratuito lê o seu app Base44 no ar, de fora, e diz quais\nchaves e endereços ele consegue ver. Leva cerca de 20 segundos e não precisa de\nconta: ",[108,230,232],{"href":231},"\u002Fsecurity-scanner","escanear seu app",[21,234,236],{"id":235},"a-única-coisa-que-ninguém-consegue-conferir-de-fora","A única coisa que ninguém consegue conferir de fora",[10,238,239],{},"Se um estranho consegue ler os seus dados. Nós não, nenhum outro scanner também,\ne o motivo é o próprio desenho do Base44.",[10,241,242],{},"Na maioria dos builders o seu app fala com o banco direto do navegador do\nvisitante. Isso quer dizer que o banco tem um endereço público, que o seu app\ncarrega esse endereço, e que qualquer um pode extraí-lo e fazer perguntas ao\nbanco. Se vai receber respostas depende de um ajuste por tabela que o dono pode\nnunca ter visto. É a maior causa isolada de dados vazados em apps feitos assim, e\nno Base44 esse caminho não está disponível para você, porque as requisições\npassam pelo Base44.",[10,244,245,246,248],{},"A medição diz isso com todas as letras. 1.466 dos 5.442 apps Base44 citam um\nprojeto Supabase em algum ponto da página. Nossa verificação de Row Level\nSecurity conseguiu resposta utilizável de ",[17,247,182],{}," deles.",[32,250],{"alt":251,"caption":252,"src":253},"Três barras que estreitam da esquerda para a direita numa mesma escala: 5.442 apps Base44, 1.466 que citam um projeto Supabase, e uma barra de 2 desenhada como um fio com um anel em volta. Um contorno tracejado continua do fio até a largura da segunda barra, com um ponto de interrogação e o número 1.464 embaixo.","A terceira barra são dois apps. A parte tracejada são os 1.464 que não deram nada para a verificação ler, que é exatamente a aparência, vista da rua, de um banco sem endereço público.","\u002Fblog\u002Fis-base44-safe\u002Fwhat-nobody-can-ask-1600x620.png",[10,255,256],{},"Compare com os builders em que a porta dá para a rua. No Lovable, 6.535 apps\ncitam um projeto Supabase, 3.553 deram à verificação uma resposta utilizável, e\n2.017 deles entregaram linhas a uma requisição sem login. No Bolt, 35 de 267\nresponderam. No v0, nenhum de 17.",[10,258,259,260,263],{},"Dois apps não são uma taxa, e não vamos publicar nenhuma. ",[17,261,262],{},"O resumo honesto é\nque os seus dados no Base44 estão atrás de uma porta que não alcançamos, o que é\nmelhor do que uma porta escancarada, e não é a mesma coisa que saber que ela está\ntrancada."," O que decide isso está do lado de dentro: quem pode se cadastrar, o\nque uma conta cadastrada enxerga, e se alguma tela foi feita supondo que ninguém\niria olhar.",[21,265,267],{"id":266},"ou-seja-aqui-a-verificação-de-dentro-é-a-que-importa","Ou seja: aqui a verificação de dentro é a que importa",[10,269,270],{},"O Base44 tem uma, e num app Base44 ela enxerga a metade que nós não enxergamos.",[10,272,273],{},"A página de segurança do Base44 diz que você pode rodar um escaneamento de\nsegurança pela aba Security de cada app e que ele verifica dependências de\nterceiros, padrões de código inseguros, segredos expostos, verificações de login\nausentes e regras fracas de acesso a dados. Essas duas últimas são exatamente as\nperguntas que um escaneamento de fora não alcança num app Base44. Lido em 6 de\noutubro de 2026.",[10,275,276],{},"O contrário também vale, e por isso as 95 estão neste artigo. Um scanner de\ndentro lê o seu projeto; ele não tem motivo nenhum para buscar a sua página\npublicada e ler o que saiu nela. Então os dois respondem metades diferentes, e\nquem, sendo dono de um app Base44, roda só um deles fica cego de um jeito\nespecífico:",[278,279,280,287],"ul",{},[281,282,283,286],"li",{},[17,284,285],{},"A aba Security do Base44"," lê o projeto: suas dependências, seu código, suas\nverificações de login, suas regras de acesso a dados.",[281,288,289,292],{},[17,290,291],{},"Um escaneamento de fora"," lê o que os seus visitantes recebem: as chaves da\npágina, os endereços que ela chama, os cabeçalhos que voltam e se saiu um mapa\njunto.",[10,294,295,296,225],{},"Rode o de dentro antes de publicar e o de fora depois. A documentação do Base44\ndescreve esse escaneamento com mais detalhe do que a página de segurança deles,\ne nós a lemos inteira: ",[108,297,299],{"href":298},"\u002Fblog\u002Fbase44-security-scan","o que ele verifica e por que pode voltar limpo enquanto\na sua página publicada continua carregando uma chave",[21,301,303],{"id":302},"se-você-conectou-o-seu-próprio-projeto-supabase","Se você conectou o seu próprio projeto Supabase",[10,305,306],{},"Então a porta da rua volta, e o ajuste por tabela é seu de novo.",[10,308,309],{},"O Base44 deixa você conectar o seu próprio projeto Supabase em vez de usar o\nbanco que ele fornece. Isso muda a coisa mais importante deste artigo: o seu\nprojeto responde à internet diretamente, a sua página carrega o endereço dele, e\no Row Level Security passa a ser a única coisa entre um estranho e uma tabela.\nEle vem desligado por padrão em qualquer tabela criada rodando SQL.",[32,311],{"alt":312,"caption":313,"src":314},"Dois painéis. No esquerdo, uma seta leva de um app Base44 a um painel de plataforma Base44 com um banco de dados dentro, e a rota própria de um visitante até esse banco é uma linha tracejada que para na parede do painel. No direito, a mesma seta sai para um banco que está sozinho, e a rota do visitante chega até ele direto, por um portão.","À esquerda, um app Base44 sobre o banco de dados do próprio Base44. À direita, o mesmo app com o seu projeto Supabase conectado. O portão da direita é o Row Level Security, e é você quem o configura.","\u002Fblog\u002Fis-base44-safe\u002Fyour-own-supabase-1600x620.png",[10,316,317,318,322,323,327],{},"Este é o único caminho pelo qual o clássico problema do banco aberto chega a um\napp Base44, e ele é conferível nas duas direções: nosso escaneamento consegue\nfazer ao seu projeto Supabase a mesma pergunta que faz em qualquer outro builder,\ne\n",[108,319,321],{"href":320},"\u002Fblog\u002Fcan-anyone-read-your-supabase-database","a versão de cinco minutos da conferência","\né uma página do seu próprio painel. Se você tem tabelas com qualquer coisa sobre\npessoas,\n",[108,324,326],{"href":325},"\u002Fblog\u002Fenable-rls-on-every-supabase-table","ligar isso em todas as tabelas"," é a\nprimeira coisa de hoje.",[10,329,330,331,334,335,338,339,225],{},"Um projeto Supabase que é seu também é um banco cuja cópia é responsabilidade\nsua. O ",[17,332,333],{},"Care"," mantém uma cópia do seu banco ",[17,336,337],{},"Supabase"," numa periodicidade\nfixa e te dá restauração em um clique, e, se você conectar uma credencial de\nStorage, os seus arquivos enviados vêm junto. Ele cobre Supabase, então é para\neste ramo do artigo e não para um app Base44 sobre o banco do próprio Base44:\n",[108,340,342],{"href":341},"\u002Fsupabase-backups","como funcionam os backups",[21,344,346],{"id":345},"a-conferência-de-cinco-minutos-no-seu-próprio-app-base44","A conferência de cinco minutos no seu próprio app Base44",[10,348,349],{},"Quatro coisas, na ordem em que valem a pena.",[10,351,352,355,356,225],{},[17,353,354],{},"Abra o seu app publicado e veja o que saiu junto com ele."," Aperte F12, abra a\naba Network, recarregue e leia as requisições. Você procura uma chave numa URL ou\nnuma resposta, e um endereço que não reconheça. Nosso escaneamento faz isso de\nfora e lista o que encontrou, o que é mais rápido do que ler você mesmo:\n",[108,357,232],{"href":231},[10,359,360,363,364,368],{},[17,361,362],{},"Se encontrar uma chave, identifique antes de entrar em pânico."," Uma chave de\nAPI do Google quer ser restringida, não rotada. Qualquer coisa que comece com\n",[365,366,367],"code",{},"sk_"," quer ser rotada agora.",[10,370,371,374],{},[17,372,373],{},"Abra a aba Security do Base44 e rode o escaneamento de lá também."," É o único\ndos dois que consegue ver as suas verificações de login e as suas regras de\nacesso a dados.",[10,376,377,380],{},[17,378,379],{},"E depois cadastre-se no seu próprio app como um estranho faria."," Crie uma\nsegunda conta, não dê nada a ela e veja até onde ela chega. Essa é a pergunta que\no escaneamento de fora não consegue fazer, e um cadastro responde.",[21,382,384],{"id":383},"seu-app-muda-toda-vez-que-você-publica","Seu app muda toda vez que você publica",[10,386,387],{},"Um escaneamento é a leitura de um momento, e o momento acaba na próxima vez que\nvocê aperta publicar.",[10,389,390],{},"Isso não é um problema do Base44, é como todos esses builders funcionam: um\nprompt que acrescenta um recurso pode acrescentar uma chave, uma página nova ou\num endereço que responde. Os 95 apps em que encontramos uma chave não foram\nfeitos por gente que queria uma chave na página. Foram feitos um prompt de cada\nvez.",[278,392,393,400],{},[281,394,395,396,399],{},"O ",[17,397,398],{},"Monitor"," roda de novo as nove verificações numa periodicidade fixa e te\navisa quando uma resposta muda.",[281,401,395,402,404,405,407],{},[17,403,333],{}," acrescenta uma cópia do seu banco ",[17,406,337],{},", guardada numa\nperiodicidade fixa, com restauração em um clique.",[10,409,410,411,225],{},"Os dois leem as mesmas nove verificações sobre as quais este artigo foi\nconstruído: ",[108,412,414],{"href":413},"\u002Fpricing","veja o que cada um cobre",[21,416,418],{"id":417},"o-que-fazer-esta-semana","O que fazer esta semana",[420,421,422],"key-takeaways",{},[278,423,424,427,433,436,439],{},[281,425,426],{},"Leia a linha de chaves e a linha de segredos do seu relatório, não a letra. Um B num app Base44 é o chão da plataforma, e 4.231 dos 5.442 apps que avaliamos estão sentados nele.",[281,428,429,430,432],{},"Se há uma chave na sua página publicada, identifique primeiro. Uma chave de API do Google é restringida; qualquer coisa que comece com ",[365,431,367],{}," é rotada hoje.",[281,434,435],{},"Rode também o próprio escaneamento do Base44 pela aba Security do seu app. Num app Base44 ele é o único dos dois que consegue ver as suas verificações de login e as suas regras de acesso a dados.",[281,437,438],{},"Cadastre-se no seu próprio app como um estranho e veja até onde a conta nova chega. Nenhum escaneamento de fora responde isso, em builder nenhum.",[281,440,441],{},"Se você conectou o seu próprio projeto Supabase, ligue o Row Level Security em todas as tabelas e depois confira se ele realmente funciona, porque esse é o único caminho pelo qual um estranho chega direto aos seus dados.",[10,443,444,445,449,450,454,455,225],{},"Se você prefere seguir isso como uma lista, o\n",[108,446,448],{"href":447},"\u002Fchecklist","checklist de segurança de 10 minutos"," cobre isso e as outras coisas\nque vale desligar num app recém-lançado. A explicação em linguagem simples para\nesta plataforma é\n",[108,451,453],{"href":452},"\u002Fis-your-base44-app-safe","o seu app Base44 é seguro?",", e a comparação entre\nbuilders está ",[108,456,458],{"href":457},"\u002Fblog\u002Fsafest-ai-app-builder","em um artigo próprio",{"title":460,"searchDepth":461,"depth":461,"links":462},"",3,[463,465,466,467,468,469,470,471,472,473],{"id":23,"depth":464,"text":24},2,{"id":39,"depth":464,"text":40},{"id":118,"depth":464,"text":119},{"id":205,"depth":464,"text":206},{"id":235,"depth":464,"text":236},{"id":266,"depth":464,"text":267},{"id":302,"depth":464,"text":303},{"id":345,"depth":464,"text":346},{"id":383,"depth":464,"text":384},{"id":417,"depth":464,"text":418},"Noções de segurança","\u002Fblog\u002Fis-base44-safe\u002Fcover-1200x630.png","Um cartão de app Base44 à frente de um painel de plataforma fechado com um banco de dados dentro, e visitantes chegando ao app pela direita.","O Base44 é seguro? Rodamos nove verificações em 5.442 apps Base44 no ar. Quase todas tiraram B por motivos que o dono nunca escolheu.",false,"md",[481,484,487,490,493,496],{"q":482,"a":483},"O Base44 é seguro para um produto de verdade?","Naquilo que conseguimos ler de fora, os apps Base44 são silenciosos. Dos 5.442 que avaliamos, seis tiraram pior que B e nenhum tirou F. O que nos impede de responder direito é que um app Base44 guarda os dados atrás do Base44, e não num endereço público, então a verificação que condenou milhares de apps em outros builders aqui nem roda. Isso é de fato melhor do que um banco público deixado aberto, e não é a mesma coisa que um atestado de saúde. A parte sobre a qual você pode agir hoje são as suas próprias chaves: 95 desses 5.442 apps entregaram uma chave de API do Google na página.",{"q":485,"a":486},"Por que meu app Base44 tira B?","Quase com certeza por causa de dois cabeçalhos de resposta que o Base44 coloca em todo app que hospeda, e não por algo que você construiu. Em 5.438 dos 5.442 apps que avaliamos faltavam cabeçalhos de segurança, e 5.417 diziam a qualquer site do mundo que ele podia chamar a API deles. Os dois são decididos pela hospedagem. A linha do source map no seu relatório também é a plataforma, não você: o único mapa que responde num app Base44 pertence ao próprio script de selo do Base44.",{"q":488,"a":489},"As pessoas conseguem ver o código do meu app Base44?","Elas conseguem ler a metade que vive no navegador de qualquer app, porque um navegador não desenha uma página que não recebeu. Seus arquivos originais, com comentários e nomes, são outra coisa, e nos apps Base44 que reconferimos em setembro de 2026 eles não estavam publicados. 3.229 de 5.442 apps foram marcados por um source map, e em todos que abrimos havia o código do próprio script de selo do Base44, não o seu. Escrevemos isso em separado.",{"q":491,"a":492},"Meus dados estão seguros num app Base44?","Ninguém de fora do seu app pode te dizer, nós inclusive, e isso é um fato sobre como o Base44 foi construído, não uma falha do nosso escaneamento. Seu app pede dados ao Base44 e o Base44 pede ao banco, então não existe endereço que um estranho possa digitar. As perguntas que decidem a resposta estão, portanto, todas do lado de dentro: quem pode se cadastrar, o que uma conta cadastrada enxerga, e se alguma tela foi feita supondo que ninguém iria olhar. O próprio escaneamento de segurança do Base44 lê essa metade. Um escaneamento de fora lê a outra.",{"q":494,"a":495},"O próprio escaneamento de segurança do Base44 pega isso?","Ele lê a metade que nós não lemos. A página de segurança do Base44 diz que você pode rodar um escaneamento pela aba Security de cada app e que ele verifica dependências de terceiros, padrões de código inseguros, segredos expostos, verificações de login ausentes e regras fracas de acesso a dados. Essas duas últimas são exatamente o que um escaneamento de fora não enxerga, por estrutura, num app Base44. O que ele não tem motivo para olhar é o que a sua página publicada entrega a um visitante, que foi onde encontramos as 95 chaves de API do Google. Rode os dois e leia como duas metades de uma resposta.",{"q":497,"a":498},"O Base44 é mais seguro que o Lovable?","Os relatórios parecem opostos e a diferença é real. 15.972 de 18.563 apps Lovable tiraram A, e cerca de um em cada oito tirou C ou pior, porque um app Lovable fala com o banco direto do navegador e esse banco muitas vezes fica legível. O Base44 quase não tem cauda grave: seis apps de 5.442 abaixo de B. O que você entrega em troca é a possibilidade de conferir isso você mesmo, de fora. Comparamos os cinco builders em um artigo próprio em vez de repetir a tabela aqui.","\u002Fblog\u002Fis-base44-safe\u002Fcard-800x500.png",[501,502,503,504,505,506,507,508],"base44 é seguro","base44 segurança","segurança de apps base44","apps base44 são seguros","base44 segurança de dados","base44 supabase segurança","is base44 safe","base44 review",{},true,"\u002Fblog\u002Fis-base44-safe","2026-10-06",{"title":5,"description":477},"blog\u002Fis-base44-safe",[516,517,518],"O Base44 é seguro? 4.231 dos 5.442 apps Base44 que avaliamos tiraram B, e quatro achados que são do Base44, e não do dono do app, explicam quase tudo isso.","O que o dono errou de verdade era raro: 103 desses apps publicaram uma chave ou um segredo na página, 95 deles uma chave de API do Google e um uma chave secreta real da Stripe.","A pergunta que quase todo mundo quer dizer com \"é seguro?\" não dá para responder de fora de um app Base44. 1.466 citam um projeto Supabase e só 2 nos deixaram perguntar se um estranho consegue lê-lo.","Zkluvdar6Ia7BpSxkIuFe1DGwiuBOxdE5agzUqBh3qE",[521,527,532,538,544,550,551,557,563,569,575,581,587,593,600,606,612,617,623,629,635,641,647,653,659,665,670,676,682,688,694,700,705,710,716,722,728,734,740,746,752,758,764,770,776,782,788,794,800,806,812,818,823,829,834,839,845,851,857,862,868],{"path":522,"title":523,"description":524,"published":525,"category":474,"image":526,"draft":478},"\u002Fblog\u002Fstorage-upload-violates-row-level-security","\"Row-level security policy for table objects\" ao enviar","\"New row violates row-level security policy for table objects\" quer dizer que o seu envio não tem regra insert. Deixar o bucket público não cria nenhuma.","2026-10-11","\u002Fblog\u002Fstorage-upload-violates-row-level-security\u002Fcard-800x500.png",{"path":298,"title":528,"description":529,"published":530,"category":474,"image":531,"draft":478},"Scan de segurança do Base44: o que só ele enxerga","O scan de segurança do Base44 verifica sete tipos de problema por dentro. Esta é a metade que ele lê e mais ninguém, e a metade que ele nunca olha.","2026-10-10","\u002Fblog\u002Fbase44-security-scan\u002Fcard-800x500.png",{"path":533,"title":534,"description":535,"published":536,"category":474,"image":537,"draft":478},"\u002Fblog\u002Fapi-key-leaked-what-to-do","Sua chave de API vazou. A ordem em que agir","Uma chave de API vazou e você não sabe o que fazer primeiro. Nem toda chave no seu frontend é um vazamento, e a ordem importa mais que a pressa.","2026-10-09","\u002Fblog\u002Fapi-key-leaked-what-to-do\u002Fcard-800x500.png",{"path":539,"title":540,"description":541,"published":542,"category":474,"image":543,"draft":478},"\u002Fblog\u002Finfinite-recursion-in-policy-for-relation","\"Infinite recursion detected in policy\" sem desligar o RLS","\"Infinite recursion detected in policy for relation\" significa que a sua policy perguntou à tabela que ela protege. Veja como quebrar o círculo.","2026-10-08","\u002Fblog\u002Finfinite-recursion-in-policy-for-relation\u002Fcard-800x500.png",{"path":545,"title":546,"description":547,"published":548,"category":474,"image":549,"draft":478},"\u002Fblog\u002Fno-api-key-found-in-request","\"No API key found in request\" no Supabase, e a correção errada","\"No API key found in request\" significa que sua requisição chegou ao Supabase sem chave. Quase toda resposta aponta para as regras do seu banco.","2026-10-07","\u002Fblog\u002Fno-api-key-found-in-request\u002Fcard-800x500.png",{"path":511,"title":5,"description":477,"published":512,"category":474,"image":499,"draft":478},{"path":552,"title":553,"description":554,"published":555,"category":474,"image":556,"draft":478},"\u002Fblog\u002Fmove-a-secret-to-an-edge-function","Esconder uma chave de API: mova para uma Edge Function do Supabase","Esconder uma chave de API é tirá-la do navegador, e uma Edge Function do Supabase é o menor lugar para guardá-la. Dois passos em volta pesam mais.","2026-10-05","\u002Fblog\u002Fmove-a-secret-to-an-edge-function\u002Fcard-800x500.png",{"path":558,"title":559,"description":560,"published":561,"category":474,"image":562,"draft":478},"\u002Fblog\u002Fenv-file-exposed-on-your-server","Seu arquivo .env está exposto? Os doze caminhos para testar","Seu arquivo .env está exposto no seu próprio servidor web? Doze endereços dizem isso em um minuto, e um acerto significa que tudo nele já é público.","2026-10-04","\u002Fblog\u002Fenv-file-exposed-on-your-server\u002Fcard-800x500.png",{"path":564,"title":565,"description":566,"published":567,"category":474,"image":568,"draft":478},"\u002Fblog\u002Fis-v0-safe","Segurança do v0: os 1.790 aplicativos v0 escaneados tiraram A","A segurança do v0 medida em 1.790 aplicativos v0 no ar: todos tiraram A. Só 17 citavam um banco de dados, e é sobretudo isso que esse A mede.","2026-10-03","\u002Fblog\u002Fis-v0-safe\u002Fcard-800x500.png",{"path":570,"title":571,"description":572,"published":573,"category":474,"image":574,"draft":478},"\u002Fblog\u002Fis-bolt-safe","O Bolt é seguro? O que vimos em 1.123 aplicativos Bolt","O Bolt é seguro? Passamos 1.123 aplicativos Bolt no ar por nove verificações. A hospedagem saiu limpa. Os achados: chaves e tabelas abertas nos aplicativos.","2026-10-02","\u002Fblog\u002Fis-bolt-safe\u002Fcard-800x500.png",{"path":576,"title":577,"description":578,"published":579,"category":474,"image":580,"draft":478},"\u002Fblog\u002Fis-supabase-down-or-your-app","O Supabase caiu ou o problema é o seu app? Como saber","O Supabase caiu ou o problema é o seu app? Um projeto pausado, um banco cheio e um erro seu parecem iguais. Quatro verificações separam os casos.","2026-10-01","\u002Fblog\u002Fis-supabase-down-or-your-app\u002Fcard-800x500.png",{"path":582,"title":583,"description":584,"published":585,"category":474,"image":586,"draft":478},"\u002Fblog\u002Fdoes-supabase-encrypt-my-data","O Supabase criptografa meus dados? Sim. Veja o que isso impede","O Supabase criptografa os dados? Sim: AES-256 em repouso, TLS em trânsito, SOC 2 e ISO 27001. O que cada um cobre, e o vazamento que nenhum deles impede.","2026-09-30","\u002Fblog\u002Fdoes-supabase-encrypt-my-data\u002Fcard-800x500.png",{"path":588,"title":589,"description":590,"published":591,"category":474,"image":592,"draft":478},"\u002Fblog\u002Fsupabase-free-plan-limits","Quanto custa o Supabase? Os limites do plano gratuito","Quanto custa o Supabase: o plano gratuito tem 500 MB de banco, 5 GB de egress e nenhum backup. O que acontece em cada limite e o que o Pro de $25 muda.","2026-09-29","\u002Fblog\u002Fsupabase-free-plan-limits\u002Fcard-800x500.png",{"path":594,"title":595,"description":596,"published":597,"category":598,"image":599,"draft":478},"\u002Fblog\u002Ftest-your-supabase-backup","Teste o backup do seu Supabase antes do dia em que precisar","Como testar o backup do seu Supabase: restaurar num projeto de teste, contar as linhas, entrar e procurar a linha que falta num arquivo cortado.","2026-09-28","Backups","\u002Fblog\u002Ftest-your-supabase-backup\u002Fcard-800x500.png",{"path":601,"title":602,"description":603,"published":604,"category":598,"image":605,"draft":478},"\u002Fblog\u002Fsupabase-backup-github-action","Backup grátis do Supabase com uma GitHub Action, e a pegadinha","Um backup do Supabase com GitHub Action é grátis e serve para muitos apps. O workflow, a connection string certa e o egress de cada execução.","2026-09-27","\u002Fblog\u002Fsupabase-backup-github-action\u002Fcard-800x500.png",{"path":607,"title":608,"description":609,"published":610,"category":598,"image":611,"draft":478},"\u002Fblog\u002Fdownload-your-supabase-backup","Por que você não consegue baixar seu backup do Supabase","Você não consegue baixar seu backup do Supabase num projeto atual, porque a cópia diária é um snapshot físico. Como conferir e como ter uma cópia só sua.","2026-09-26","\u002Fblog\u002Fdownload-your-supabase-backup\u002Fcard-800x500.png",{"path":613,"title":614,"description":615,"published":610,"category":474,"image":616,"draft":478},"\u002Fblog\u002Fsupabase-permission-denied-for-table","Supabase \"permission denied for table\": o grant que falta","A partir de 30 de outubro, uma tabela nova no Supabase responde \"permission denied for table\" até receber um grant. O e-mail mostra só metade.","\u002Fblog\u002Fsupabase-permission-denied-for-table\u002Fcard-800x500.png",{"path":618,"title":619,"description":620,"published":621,"category":474,"image":622,"draft":478},"\u002Fblog\u002Fopen-api-endpoint-exposed","Um endpoint de API aberto é um problema? Leia o JSON","Seu scan apontou um endpoint de API aberto. Se isso importa depende do que voltou, e a maioria dos que encontramos era da própria plataforma.","2026-09-25","\u002Fblog\u002Fopen-api-endpoint-exposed\u002Fcard-800x500.png",{"path":624,"title":625,"description":626,"published":627,"category":474,"image":628,"draft":478},"\u002Fblog\u002Flovable-security-scan","Escaneamento de segurança do Lovable: o que ele não prova","Escaneamento de segurança do Lovable: o que o Quick scan e o Deep scan checam, quando cada um roda, e a única coisa que nenhum escaneamento por dentro prova.","2026-09-24","\u002Fblog\u002Flovable-security-scan\u002Fcard-800x500.png",{"path":630,"title":631,"description":632,"published":633,"category":598,"image":634,"draft":478},"\u002Fblog\u002Fsupabase-backup-auth-users","Por que seu dump do Supabase não tem usuários dentro","Rode supabase db dump sozinho e você recebe a forma do seu banco e nenhuma das linhas dele, sem o schema auth onde seus usuários moram.","2026-09-23","\u002Fblog\u002Fsupabase-backup-auth-users\u002Fcard-800x500.png",{"path":636,"title":637,"description":638,"published":639,"category":474,"image":640,"draft":478},"\u002Fblog\u002Fdomain-and-certificate-expiry","Domínio expirado, site fora do ar: o que acontece agora","Seu domínio expirou e seu site está fora do ar. O relógio que começa a correr, por que o certificado é o problema menor, e como conferir os dois.","2026-09-22","\u002Fblog\u002Fdomain-and-certificate-expiry\u002Fcard-800x500.png",{"path":642,"title":643,"description":644,"published":645,"category":474,"image":646,"draft":478},"\u002Fblog\u002Fis-lovable-safe","O Lovable é seguro? O que vimos em 18.554 aplicativos Lovable","O Lovable é seguro? Passamos 18.554 aplicativos Lovable no ar por nove verificações. A plataforma foi a mais limpa de cinco. Os achados estavam nos aplicativos.","2026-09-21","\u002Fblog\u002Fis-lovable-safe\u002Fcard-800x500.png",{"path":648,"title":649,"description":650,"published":651,"category":474,"image":652,"draft":478},"\u002Fblog\u002Fvibe-coded-app-security-checklist","O checklist de segurança do vibe coding, em nove verificações","Um checklist de segurança do vibe coding com nove itens, cada um verificável no seu app de fora por qualquer pessoa, e cada um com um teste de uma linha.","2026-09-20","\u002Fblog\u002Fvibe-coded-app-security-checklist\u002Fcard-800x500.png",{"path":654,"title":655,"description":656,"published":657,"category":474,"image":658,"draft":478},"\u002Fblog\u002Fstripe-secret-key-in-frontend","Uma chave secreta da Stripe no frontend pode mover dinheiro","Uma chave secreta da Stripe exposta no seu frontend pode reembolsar, cobrar e ler cada ficha de cliente que você tem. Sua chave pk_live_ é que deve estar aí.","2026-09-19","\u002Fblog\u002Fstripe-secret-key-in-frontend\u002Fcard-800x500.png",{"path":660,"title":661,"description":662,"published":663,"category":474,"image":664,"draft":478},"\u002Fblog\u002Fvite-and-next-public-env-vars","Variáveis de ambiente do Vite expostas: o prefixo diz publique isto","Variáveis de ambiente do Vite expostas no seu app: fizeram o que o prefixo pediu. VITE_ e NEXT_PUBLIC_ significam publique isto, e a IA nunca soube o custo.","2026-09-18","\u002Fblog\u002Fvite-and-next-public-env-vars\u002Fcard-800x500.png",{"path":110,"title":666,"description":667,"published":668,"category":474,"image":669,"draft":478},"Segurança no Base44: o que um scan aponta e o que é seu para corrigir","Segurança no Base44 em 5.438 apps escaneados: três achados em quase todos são da plataforma, o source map é o selo do Base44, e a sua parte é uma lista curta.","2026-09-17","\u002Fblog\u002Fbase44-source-maps\u002Fcard-800x500.png",{"path":671,"title":672,"description":673,"published":674,"category":474,"image":675,"draft":478},"\u002Fblog\u002Fis-cursor-ai-safe","O Cursor AI é seguro? O editor, o código e o app que você publicou","O Cursor AI é seguro? Três perguntas em uma busca: o que o Cursor guarda, o que o código que ele escreve erra, e se o app que você publicou está aberto.","2026-09-16","\u002Fblog\u002Fis-cursor-ai-safe\u002Fcard-800x500.png",{"path":677,"title":678,"description":679,"published":680,"category":474,"image":681,"draft":478},"\u002Fblog\u002Fis-replit-safe","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.","2026-09-15","\u002Fblog\u002Fis-replit-safe\u002Fcard-800x500.png",{"path":683,"title":684,"description":685,"published":686,"category":598,"image":687,"draft":478},"\u002Fblog\u002Fsupabase-storage-backup","Supabase storage backup: sua cópia do banco não tem nenhum arquivo","Um Supabase storage backup é uma tarefa à parte. Os backups do banco guardam a lista dos seus arquivos e nenhum deles, então cada upload fica quebrado.","2026-09-14","\u002Fblog\u002Fsupabase-storage-backup\u002Fcard-800x500.png",{"path":689,"title":690,"description":691,"published":692,"category":598,"image":693,"draft":478},"\u002Fblog\u002Fsupabase-point-in-time-recovery","Point-in-time recovery do Supabase: preço e limites","O point-in-time recovery do Supabase rebobina seu banco para qualquer segundo da última semana. Custa $100 por mês além do Pro e cobre só o banco.","2026-09-13","\u002Fblog\u002Fsupabase-point-in-time-recovery\u002Fcard-800x500.png",{"path":695,"title":696,"description":697,"published":698,"category":598,"image":699,"draft":478},"\u002Fblog\u002Fsupabase-project-paused-recover","Projeto Supabase pausado? Seus dados continuam lá","O Supabase pausou seu projeto depois de uma semana sem atividade. Nada foi apagado, Restaurar fica ao lado do nome e você tem um ano antes disso mudar.","2026-09-12","\u002Fblog\u002Fsupabase-project-paused-recover\u002Fcard-800x500.png",{"path":457,"title":701,"description":702,"published":703,"category":474,"image":704,"draft":478},"Qual builder de apps com IA é mais seguro? 30.998 apps testados","Qual builder de apps com IA é mais seguro? Escaneamos 30.998 apps no ar do Lovable, Base44, Replit, v0 e Bolt. O builder não é o que decide sua nota.","2026-09-11","\u002Fblog\u002Fsafest-ai-app-builder\u002Fcard-800x500.png",{"path":325,"title":706,"description":707,"published":708,"category":474,"image":709,"draft":478},"Ative Row Level Security em toda tabela do Supabase e comprove","Ativar Row Level Security no Supabase sem política fecha a tabela por completo. Uma política sem a chave ligada não faz nada. Aqui está o SQL, e o teste.","2026-09-10","\u002Fblog\u002Fenable-rls-on-every-supabase-table\u002Fcard-800x500.png",{"path":711,"title":712,"description":713,"published":714,"category":474,"image":715,"draft":478},"\u002Fblog\u002Fsupabase-rls-disabled-in-public","Supabase \"RLS disabled in public\": o que o aviso não vê","O Supabase marca \"RLS disabled in public\" como erro. Ele não diz nada sobre a política de leitura que deixa a sua tabela igualmente aberta.","2026-09-09","\u002Fblog\u002Fsupabase-rls-disabled-in-public\u002Fcard-800x500.png",{"path":717,"title":718,"description":719,"published":720,"category":474,"image":721,"draft":478},"\u002Fblog\u002Frotate-supabase-service-role-key","Como rotacionar uma chave service_role do Supabase vazada","O Supabase manda fechar o vazamento primeiro. Outros guias mandam rotacionar agora. O que vale depende de para onde a sua chave service_role vazou.","2026-09-08","\u002Fblog\u002Frotate-supabase-service-role-key\u002Fcard-800x500.png",{"path":723,"title":724,"description":725,"published":726,"category":474,"image":727,"draft":478},"\u002Fblog\u002Fvibe-coding-security-scanners-compared","Scanners de segurança para vibe coding comparados, o nosso incluído","O melhor scanner de segurança para vibe coding depende de três perguntas que nenhuma lista de recursos responde. Dez ferramentas comparadas, com preços.","2026-09-07","\u002Fblog\u002Fvibe-coding-security-scanners-compared\u002Fcard-800x500.png",{"path":729,"title":730,"description":731,"published":732,"category":474,"image":733,"draft":478},"\u002Fblog\u002Fsupabase-security-checker","Supabase security checker: faça você mesmo as cinco verificações","Um Supabase security checker lê o seu app publicado em vez das configurações do projeto. Aqui estão as cinco verificações e como fazer cada uma sozinho.","2026-09-06","\u002Fblog\u002Fsupabase-security-checker\u002Fcard-800x500.png",{"path":735,"title":736,"description":737,"published":738,"category":474,"image":739,"draft":478},"\u002Fblog\u002Fvibe-coding-security-scanner","Scanner de segurança para vibe coding: o que ele não vê","Um scanner de segurança para vibe coding lê seu app no ar, de fora. O que isso cobre, as quatro coisas que ele não consegue ver e como ler o resultado.","2026-09-05","\u002Fblog\u002Fvibe-coding-security-scanner\u002Fcard-800x500.png",{"path":741,"title":742,"description":743,"published":744,"category":474,"image":745,"draft":478},"\u002Fblog\u002Fmissing-security-headers","Cabeçalhos de segurança faltando: quando isso importa","Cabeçalhos de segurança faltando é o achado que nosso scanner mais imprime. Contra o que eles protegem e quando são a linha menos urgente do relatório.","2026-09-04","\u002Fblog\u002Fmissing-security-headers\u002Fcard-800x500.png",{"path":747,"title":748,"description":749,"published":750,"category":474,"image":751,"draft":478},"\u002Fblog\u002Fopenai-api-key-exposed-in-frontend","Sua chave de API da OpenAI está exposta no frontend. Troque-a.","Uma chave de API da OpenAI exposta no frontend não pode ser presa a um domínio. Troque-a hoje, mova a chamada para o seu servidor e limite o gasto.","2026-09-03","\u002Fblog\u002Fopenai-api-key-exposed-in-frontend\u002Fcard-800x500.png",{"path":753,"title":754,"description":755,"published":756,"category":474,"image":757,"draft":478},"\u002Fblog\u002Fwhat-secrets-leak-from-vibe-coded-apps","Chave de API exposta no frontend: o que 30.998 apps entregam","Uma chave de API exposta no seu frontend costuma ser uma chave do Google Maps. Escaneamos 30.998 apps vibe-coded e contamos quais segredos vazam de verdade.","2026-09-02","\u002Fblog\u002Fwhat-secrets-leak-from-vibe-coded-apps\u002Fcard-800x500.png",{"path":759,"title":760,"description":761,"published":762,"category":598,"image":763,"draft":478},"\u002Fblog\u002Fsupabase-backup-tools-compared","Ferramentas de backup do Supabase comparadas, a nossa incluída","Quatro tipos de ferramenta de backup do Supabase, o que cada uma copia de verdade e quando uma GitHub Action gratuita ganha de pagar, nós inclusive.","2026-09-01","\u002Fblog\u002Fsupabase-backup-tools-compared\u002Fcard-800x500.png",{"path":765,"title":766,"description":767,"published":768,"category":474,"image":769,"draft":478},"\u002Fblog\u002Freplit-secrets-explained","Como usar secrets no Replit, e o que ainda assim é publicado","Como usar secrets no Replit: adicionar um, ler de volta e resolver as duas causas do undefined. E as chaves que a ferramenta Secrets não consegue proteger.","2026-08-31","\u002Fblog\u002Freplit-secrets-explained\u002Fcard-800x500.png",{"path":771,"title":772,"description":773,"published":774,"category":598,"image":775,"draft":478},"\u002Fblog\u002Fback-up-supabase-free-tier","Backups do plano gratuito do Supabase: como fazer sem terminal","No plano gratuito do Supabase não existe backup nenhum: a cópia é você que faz. Como fazer uma pelo painel e o que a rota do CSV deixa para trás.","2026-08-30","\u002Fblog\u002Fback-up-supabase-free-tier\u002Fcard-800x500.png",{"path":777,"title":778,"description":779,"published":780,"category":474,"image":781,"draft":478},"\u002Fblog\u002Fis-supabase-secure","O Supabase é seguro? É. Seu projeto é outra pergunta","O Supabase é seguro? A plataforma é auditada, criptografada e passa por pentests. A documentação deles diz onde isso termina e começam suas configurações.","2026-08-29","\u002Fblog\u002Fis-supabase-secure\u002Fcard-800x500.png",{"path":783,"title":784,"description":785,"published":786,"category":474,"image":787,"draft":478},"\u002Fblog\u002Fwhere-to-find-supabase-api-keys","Onde ficam as chaves de API do Supabase: anon, service_role e URL","A URL do projeto, a chave anon e a chave service_role ficam todas numa página do painel. Aqui está onde ela fica, e qual dos quatro valores vai no seu app.","2026-08-28","\u002Fblog\u002Fwhere-to-find-supabase-api-keys\u002Fcard-800x500.png",{"path":789,"title":790,"description":791,"published":792,"category":474,"image":793,"draft":478},"\u002Fblog\u002Fnew-row-violates-row-level-security-policy","New row violates row-level security policy no Supabase. E agora?","\"New row violates row-level security policy\" significa que o Supabase recusou uma escrita. O conserto rápido reabre a tabela para qualquer um.","2026-08-27","\u002Fblog\u002Fnew-row-violates-row-level-security-policy\u002Fcard-800x500.png",{"path":795,"title":796,"description":797,"published":798,"category":474,"image":799,"draft":478},"\u002Fblog\u002Fcors-wildcard-security-risk","Um curinga CORS é um risco de segurança? Quase nunca.","Um curinga CORS é um risco de segurança? Em geral é o padrão do seu builder e não entrega nada que o seu servidor já não desse a qualquer um que pedisse.","2026-08-26","\u002Fblog\u002Fcors-wildcard-security-risk\u002Fcard-800x500.png",{"path":801,"title":802,"description":803,"published":804,"category":598,"image":805,"draft":478},"\u002Fblog\u002Fsupabase-branching-is-not-a-backup","Branching do Supabase não é backup. Ele só anda para a frente.","Por que o branching do Supabase não é backup: um branch começa sem os seus dados e um merge só leva o esquema. Para que ele serve e o que usar no lugar.","2026-08-25","\u002Fblog\u002Fsupabase-branching-is-not-a-backup\u002Fcard-800x500.png",{"path":807,"title":808,"description":809,"published":810,"category":598,"image":811,"draft":478},"\u002Fblog\u002Fhow-to-restore-a-supabase-backup","Como restaurar um backup do Supabase, e o que quebra depois","Como restaurar um backup do Supabase pelo painel ou por um arquivo de dump, o que a restauração substitui e por que o seu app pode continuar quebrado no fim.","2026-08-24","\u002Fblog\u002Fhow-to-restore-a-supabase-backup\u002Fcard-800x500.png",{"path":813,"title":814,"description":815,"published":816,"category":474,"image":817,"draft":478},"\u002Fblog\u002Fsupabase-storage-bucket-public","Seu bucket do Supabase Storage é público. Isso é um problema?","Um bucket público do Supabase Storage significa que quem tem a URL de um arquivo pode abri-lo. Não significa que alguém possa listar o que está lá dentro.","2026-08-23","\u002Fblog\u002Fsupabase-storage-bucket-public\u002Fcard-800x500.png",{"path":215,"title":819,"description":820,"published":821,"category":474,"image":822,"draft":478},"Uma chave de API do Google no frontend é um problema?","Uma chave de API do Google exposta no seu frontend é a chave que nosso scanner mais encontra, e quase sempre está tudo bem. Um ajuste gratuito decide isso.","2026-08-22","\u002Fblog\u002Fgoogle-api-key-exposed-in-frontend\u002Fcard-800x500.png",{"path":824,"title":825,"description":826,"published":827,"category":598,"image":828,"draft":478},"\u002Fblog\u002Fai-agent-deleted-my-database","Um agente de IA apagou meus dados do Supabase. O que eu recupero?","Um agente de IA apagou dados do seu banco. O que você recupera já estava decidido antes de ele rodar, e os próximos minutos decidem o resto.","2026-08-21","\u002Fblog\u002Fai-agent-deleted-my-database\u002Fcard-800x500.png",{"path":320,"title":830,"description":831,"published":832,"category":474,"image":833,"draft":478},"Qualquer um consegue ler seu banco Supabase? Testamos 3.680 apps","Qualquer um consegue ler seu banco de dados Supabase sem fazer login? Escaneamos 30.998 apps no ar criadas com builders de IA e medimos quantas dizem que sim.","2026-08-18","\u002Fblog\u002Fcan-anyone-read-your-supabase-database\u002Fcard-800x500.png",{"path":835,"title":836,"description":837,"published":832,"category":474,"image":838,"draft":478},"\u002Fblog\u002Fsource-maps-exposed-in-production","Source maps expostos: seu app está publicando o código original","Um source map exposto deixa qualquer um ler o código original do seu app, comentários incluídos. A verificação de 30 segundos e o que importa de verdade.","\u002Fblog\u002Fsource-maps-exposed-in-production\u002Fcard-800x500.png",{"path":840,"title":841,"description":842,"published":843,"category":474,"image":844,"draft":478},"\u002Fblog\u002Fsupabase-new-api-keys","As novas chaves de API do Supabase: qual vai no seu app?","O Supabase trocou anon e service_role por chaves publicáveis e secretas. Qual delas pertence ao seu app e qual nunca deve estar lá?","2026-08-12","\u002Fblog\u002Fsupabase-new-api-keys\u002Fcard-800x500.png",{"path":846,"title":847,"description":848,"published":849,"category":598,"image":850,"draft":478},"\u002Fblog\u002Fdoes-supabase-back-up-my-database","O Supabase faz backup do meu banco de dados? Depende do plano.","O Supabase faz backup do seu banco de dados? Todo dia nos planos pagos, e nada no gratuito. Como descobrir o que você tem e o que essa cópia não cobre.","2026-08-11","\u002Fblog\u002Fdoes-supabase-back-up-my-database\u002Fcard-800x500.png",{"path":852,"title":853,"description":854,"published":855,"category":474,"image":856,"draft":478},"\u002Fblog\u002Fsupabase-rls-on-but-table-still-public","O Supabase Row Level Security está ligado. A tabela continua pública.","Ligar o Supabase Row Level Security não protege uma tabela. Quem protege são as políticas, e a que consertou o seu app pode deixar qualquer um entrar.","2026-08-10","\u002Fblog\u002Fsupabase-rls-on-but-table-still-public\u002Fcard-800x500.png",{"path":858,"title":859,"description":860,"published":855,"category":598,"image":861,"draft":478},"\u002Fblog\u002Fversion-history-is-not-a-backup","O histórico de versões não é backup. Ele não desfaz um delete.","Lovable e Bolt guardam um histórico de versões do seu código. Seu banco de dados é um serviço à parte, e voltar atrás não traz os seus dados de volta.","\u002Fblog\u002Fversion-history-is-not-a-backup\u002Fcard-800x500.png",{"path":863,"title":864,"description":865,"published":866,"category":598,"image":867,"draft":478},"\u002Fblog\u002Fthree-ways-to-back-up-a-supabase-database","Três formas de fazer backup de um banco Supabase, e o que falta","O painel, o pg_dump e um serviço gerenciado. O que cada um salva de verdade, o que deixa de fora sem avisar e qual sobrevive a perder a conta.","2026-08-09","\u002Fblog\u002Fthree-ways-to-back-up-a-supabase-database\u002Fcard-800x500.png",{"path":223,"title":869,"description":870,"published":866,"category":474,"image":871,"draft":478},"Quais chaves de API são seguras no navegador e quais não são","Sua chave anon do Supabase foi feita para ser pública. Sua chave service_role não, e ela ignora todas as regras que você criar. Como diferenciar as duas.","\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend\u002Fcard-800x500.png",1791705963234]