[{"data":1,"prerenderedAt":593},["ShallowReactive",2],{"blog-pt-back-up-supabase-free-tier":3,"blog-index-pt":351},{"id":4,"title":5,"body":6,"category":309,"cover":310,"coverAlt":311,"description":312,"draft":313,"extension":314,"faq":315,"image":331,"keywords":332,"meta":339,"navigation":340,"ogTitle":341,"path":342,"published":343,"seo":344,"stem":345,"tldr":346,"updated":343,"__hash__":350},"blog_pt\u002Fblog\u002Fback-up-supabase-free-tier.md","Backups do plano gratuito do Supabase: como fazer sem terminal",{"type":7,"value":8,"toc":297},"minimark",[9,13,21,24,29,32,41,45,48,51,54,58,61,125,131,139,142,149,153,159,175,192,197,205,209,217,220,223,227,230,235,253,265,269,289],[10,11,12],"p",{},"O seu projeto está no plano gratuito do Supabase e você abriu Database e depois\nBackups atrás de uma lista de cópias com data para restaurar. Não tem nada ali.\nNenhuma data, nenhum botão de restaurar, só um aviso falando em mudar de plano.\nA página não está quebrada. Não existem backups do plano gratuito do Supabase\npara listar, porque esse plano não tira nenhum.",[10,14,15,16,20],{},"É aqui que a maior parte das respostas para isso se perde. Elas entregam um\ncomando ",[17,18,19],"code",{},"pg_dump",", que é a ferramenta certa e uma instrução que você não tem\ncomo seguir: ela pressupõe um terminal, uma instalação do Postgres e uma string\nde conexão, e você montou essa app no Lovable ou no Bolt justamente para nunca\nprecisar de nenhuma das três.",[10,22,23],{},"Dá para tirar os seus dados pelo painel. Uma rota leva uns dez minutos e te dá\nas suas linhas. A outra leva mais tempo e te dá o banco de dados.",[25,26,28],"h2",{"id":27},"o-plano-gratuito-do-supabase-inclui-backups","O plano gratuito do Supabase inclui backups?",[10,30,31],{},"Não. O plano gratuito não tira nenhum, e não existe um ajuste que ligue isso. Os\nbackups diários automáticos começam no plano Pro, e a recuperação para um ponto\nno tempo é um adicional pago acima disso.",[10,33,34,35,40],{},"Em que plano você está é o fato do qual tudo o mais aqui depende, e\n",[36,37,39],"a",{"href":38},"\u002Fblog\u002Fdoes-supabase-back-up-my-database","dá para conferir em dois minutos",". Se\nvocê está no gratuito, a única cópia dos seus dados é a que você fez. O resto\ndeste artigo é como fazer uma hoje.",[25,42,44],{"id":43},"a-cópia-mais-rápida-exporte-as-suas-tabelas-para-csv","A cópia mais rápida: exporte as suas tabelas para CSV",[10,46,47],{},"Abra o Table Editor, escolha uma tabela e use o controle de exportação acima da\ngrade. Ele oferece baixar cada linha como arquivo CSV, e esse arquivo chega na\nsua pasta de downloads como qualquer outro.",[10,49,50],{},"Depois faça de novo para a próxima tabela, e para a seguinte. A exportação\ntrabalha em uma tabela por vez, que é a parte que costuma não ser dita: você\nprecisa saber quais tabelas a sua app tem. A lista à esquerda do Table Editor é\nessa lista, e vale ler até o fim antes de começar.",[10,52,53],{},"Dez minutos de clique te dão uma pasta de arquivos CSV com cada linha que os\nseus usuários criaram. Como jeito de não perder os seus dados hoje à tarde, são\ndez minutos bem gastos. O que você tem no fim é uma cópia das linhas, e só das\nlinhas.",[25,55,57],{"id":56},"o-que-os-arquivos-csv-deixam-para-trás","O que os arquivos CSV deixam para trás",[10,59,60],{},"Cinco coisas, e nenhuma delas é uma linha. Um CSV guarda o conteúdo de uma\ntabela e nada sobre como aquela tabela foi construída, então o que sobra para\nvocê é uma lista do que havia no cômodo, sem nenhuma das prateleiras.",[62,63,64,77],"table",{},[65,66,67],"thead",{},[68,69,70,74],"tr",{},[71,72,73],"th",{},"O que fica para trás",[71,75,76],{},"Por que isso pesa na hora de devolver os dados",[78,79,80,89,97,105,117],"tbody",{},[68,81,82,86],{},[83,84,85],"td",{},"As relações",[83,87,88],{},"Um CSV não faz ideia de qual tabela precisa ser carregada primeiro, então o import falha ou deixa linhas apontando para coisas que sumiram",[68,90,91,94],{},[83,92,93],{},"Os tipos das colunas",[83,95,96],{},"Tudo chega como texto até algo dizer o contrário para o banco novo, e uma célula vazia e um null de verdade viram a mesma coisa",[68,98,99,102],{},[83,100,101],{},"As políticas de Row Level Security",[83,103,104],{},"As regras que decidem quem pode ler o quê não estão no arquivo, e uma tabela recriada sem elas fica fechada para todo mundo ou aberta para todo mundo",[68,106,107,110],{},[83,108,109],{},"As suas contas de login",[83,111,112,113,116],{},"Elas ficam em um schema ",[17,114,115],{},"auth"," separado, que é o motivo de não estarem no Table Editor ao lado das suas tabelas",[68,118,119,122],{},[83,120,121],{},"Tudo que os seus usuários enviaram",[83,123,124],{},"O Supabase Storage vive fora do banco de dados, então nenhum export de nenhuma tabela jamais conteve um arquivo",[126,127],"diagram",{"alt":128,"caption":129,"src":130},"À esquerda, três tabelas ligadas por linhas, com uma pessoa e um cadeado presos a elas. À direita, o mesmo conteúdo como três folhas soltas marcadas com um certo e, abaixo de uma linha divisória, as ligações, o cadeado e a pessoa desenhados apagados e riscados.","As linhas atravessam. As ligações entre elas, as regras em cima delas e as pessoas que fazem login, não.","\u002Fblog\u002Fback-up-supabase-free-tier\u002Fwhat-csv-leaves-behind-1600x780.png",[10,132,133,134,138],{},"A última linha é a que pega as pessoas de surpresa. O seu banco de dados só\nguardou o caminho de cada arquivo enviado, então uma pasta de CSVs carregada em\num projeto novo te dá uma tabela cheia de links para\n",[36,135,137],{"href":136},"\u002Fblog\u002Fsupabase-storage-bucket-public","arquivos que não estão lá",".",[10,140,141],{},"Isso não faz a rota do CSV não valer nada. Se o que te dá medo é um delete\nerrado em uma tabela, um CSV daquela tabela é o que você quer, e devolver umas\npoucas centenas de linhas pelo mesmo editor é um trabalho que você faz sozinho.\nReconstruir o projeto inteiro é que ele não consegue.",[10,143,144,145,138],{},"Já que você está olhando as suas tabelas: o nosso scan gratuito lê o seu site no\nar por fora e diz quais delas respondem para um estranho. Leva uns 20 segundos e\nnão precisa de conta: ",[36,146,148],{"href":147},"\u002Fsecurity-scanner","escaneie a sua app",[25,150,152],{"id":151},"um-backup-de-verdade-sem-abrir-um-terminal","Um backup de verdade, sem abrir um terminal",[10,154,155,156,158],{},"Use um cliente de banco de dados de mesa. pgAdmin, TablePlus e DBeaver conectam\ntodos em um projeto Supabase com uma string de conexão, e os três têm um comando\nde backup ou de dump parado em um menu. O que sai é um arquivo ",[17,157,19],{},"\ncompleto, e você não digita comando nenhum para conseguir isso.",[160,161,162,166,169,172],"ol",{},[163,164,165],"li",{},"No painel do Supabase, abra Connect e copie uma string de conexão. Se a\ndireta se recusar a conectar, pegue a do session pooler, que é a que as\npróprias instruções de restauração do Supabase usam.",[163,167,168],{},"Cole ela no cliente como conexão nova, junto com a senha do seu banco.",[163,170,171],{},"Ache o comando de backup. No pgAdmin você clica com o botão direito no banco\ne escolhe Backup; no TablePlus e no DBeaver ele fica em um menu de export ou\nde dump.",[163,173,174],{},"Salve o arquivo em algum lugar que não seja só o seu notebook.",[176,177,179],"callout",{"type":178},"warn",[10,180,181,185,186,188,189,191],{},[182,183,184],"strong",{},"O erro em que você tem mais chance de esbarrar."," Essas ferramentas não\nsalvam nada por conta própria. Elas chamam o programa padrão do Postgres\n",[17,187,19],{}," instalado na sua máquina, e ele se recusa a rodar contra um servidor\nmais novo que ele mesmo, reclamando que está abortando por uma diferença de\nversão do servidor. A saída é apontar o cliente para um ",[17,190,19],{}," mais novo (no\npgAdmin isso é um caminho de binários nas preferências) ou instalar um Postgres\nmais recente na sua máquina. É meia hora chata, e você faz uma vez.",[126,193],{"alt":194,"caption":195,"src":196},"Uma janela de terminal e uma janela de aplicativo de mesa, com os dois caminhos se encontrando em um ponto e seguindo como uma seta só até um único arquivo salvo.","As duas rotas pedem a mesma coisa ao Postgres e produzem o mesmo arquivo. Uma delas quer que você digite.","\u002Fblog\u002Fback-up-supabase-free-tier\u002Fone-file-two-ways-1600x560.png",[10,198,199,200,204],{},"Esse arquivo leva o cômodo e as prateleiras: tabelas, colunas, tipos, índices,\nfunções e as suas políticas de Row Level Security. Das rotas abertas para você\nno plano gratuito, é a única capaz de reconstruir o projeto em outro lugar, em\noutra conta, num dia em que você não consegue mais entrar nesta aqui. Ler ele de\nvolta é um trabalho à parte, e\n",[36,201,203],{"href":202},"\u002Fblog\u002Fhow-to-restore-a-supabase-backup","como restaurar um backup do Supabase","\npassa pelo que uma restauração substitui e pelo que ela deixa quebrado atrás de\nsi.",[25,206,208],{"id":207},"onde-o-arquivo-fica-e-de-quanto-em-quanto-tempo","Onde o arquivo fica, e de quanto em quanto tempo",[10,210,211,212,216],{},"Em algum lugar que não seja o mesmo notebook nem a mesma conta do Supabase. São\nduas falhas diferentes: o notebook cobre um disco que morre, a conta cobre um\ncartão que venceu enquanto você estava fora, um projeto suspenso, um login que\nninguém recupera. Uma cópia dentro da conta está atrás da mesma porta da coisa\nque ela protegia, e é justamente isso que\n",[36,213,215],{"href":214},"\u002Fblog\u002Fthree-ways-to-back-up-a-supabase-database","três jeitos de fazer backup de um banco Supabase","\ncompara rota por rota.",[10,218,219],{},"Sobre a frequência, pergunte quanto você aceitaria redigitar. Perder um dia de\ncadastros é chato, e uma cópia por noite cobre isso. Perder uma hora de pedidos\nsignifica devolver dinheiro para gente, e para isso uma por noite já é lento\ndemais.",[10,221,222],{},"Depois carregue uma das suas cópias em um projeto Supabase descartável e abra a\nsua app em cima dele. É o único passo aqui que te diz se o arquivo presta, e\ncusta mais ou menos meia hora.",[25,224,226],{"id":225},"se-você-preferir-não-fazer-isso-na-mão","Se você preferir não fazer isso na mão",[10,228,229],{},"Aí alguma coisa precisa tirar a cópia por você e conferir ela depois. É isso que\no Reeve Care faz.",[126,231],{"alt":232,"caption":233,"src":234},"Um painel do Reeve Care com duas fileiras. Na primeira, uma cópia do banco sai do contorno tracejado da conta do Supabase, se repete de forma programada e passa embaixo de uma lupa. Na segunda, esse mesmo arquivo viaja de volta para dentro da conta.","Uma cópia sai da sua conta do Supabase de forma programada, é lida de volta antes de contar, e faz o caminho inverso no dia em que você precisa.","\u002Fblog\u002Fback-up-supabase-free-tier\u002Fcare-backup-cycle-1600x520.png",[236,237,238,241,244,247,250],"ul",{},[163,239,240],{},"Roda de forma programada, várias vezes por dia dependendo do plano, alguém\nlembrando disso ou não.",[163,242,243],{},"A cópia é criptografada e guardada fora da sua conta do Supabase, então perder\na conta não leva os backups junto.",[163,245,246],{},"Cada cópia é lida de volta e contada contra o que entrou. A data que aparece\nno seu painel é a da última cópia que passou nessa conferência, nunca a da\núltima tentativa.",[163,248,249],{},"Restaurar é um botão, e antes de começar ele tira um retrato do estado atual,\nentão até a restauração tem o desfazer dela.",[163,251,252],{},"Os seus arquivos enviados também são copiados, assim que você conectar os seus\nbuckets do Storage.",[10,254,255,256,260,261,138],{},"Deixe os backups do próprio Supabase ligados também, no dia em que você passar\npara um plano pago. Duas cópias em dois lugares é a ideia inteira. O que cada\nplano inclui está na ",[36,257,259],{"href":258},"\u002F#pricing","tabela de preços do Care",", e a cópia, a\nconferência e a restauração estão desenhadas passo a passo na\n",[36,262,264],{"href":263},"\u002Fsupabase-backups","página de backups do Supabase",[25,266,268],{"id":267},"o-que-fazer-esta-semana","O que fazer esta semana",[270,271,272],"key-takeaways",{},[236,273,274,277,280,283,286],{},[163,275,276],{},"Confirme em que plano o seu projeto está. No gratuito nada está sendo copiado para você, e todo o resto daqui vem desse fato.",[163,278,279],{},"Exporte as suas tabelas para CSV hoje se tudo que você tem são dez minutos. Meia cópia ganha de nenhuma cópia.",[163,281,282],{},"Tire um dump completo por um cliente de mesa esta semana e ponha o arquivo em algum lugar que não seja o seu notebook.",[163,284,285],{},"Copie os seus arquivos do Storage à parte. Nenhum backup de banco de dados inclui eles, por rota nenhuma.",[163,287,288],{},"Carregue uma cópia em um projeto descartável, para que a primeira vez que você ler esse arquivo não seja o dia em que precisa dele.",[10,290,291,292,296],{},"Faça o export em CSV antes de fechar esta aba. É a menor coisa útil da lista e\nfunciona no plano que você já tem. A\n",[36,293,295],{"href":294},"\u002Fchecklist","checklist de segurança de 10 minutos"," cobre backups junto com o\nresto do que vale conferir em uma app recém-lançada.",{"title":298,"searchDepth":299,"depth":299,"links":300},"",3,[301,303,304,305,306,307,308],{"id":27,"depth":302,"text":28},2,{"id":43,"depth":302,"text":44},{"id":56,"depth":302,"text":57},{"id":151,"depth":302,"text":152},{"id":207,"depth":302,"text":208},{"id":225,"depth":302,"text":226},{"id":267,"depth":302,"text":268},"Backups","\u002Fblog\u002Fback-up-supabase-free-tier\u002Fcover-1200x630.png","Um banco de dados, uma tabela tirada dele e, no fim de uma seta, uma pilha pequena de arquivos salvos.","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.",false,"md",[316,319,322,325,328],{"q":317,"a":318},"Dá para baixar um backup pelo painel do Supabase no plano gratuito?","Não. A página de backups é um recurso pago, e no plano gratuito não há nada ali para baixar, porque nada foi guardado em momento algum. O que você pode baixar são os seus próprios dados: o Table Editor exporta qualquer tabela como arquivo CSV, e um cliente de banco de dados de mesa conectado ao seu projeto escreve um dump completo. As duas coisas são coisas que você faz, e não coisas que acontecem sozinhas.",{"q":320,"a":321},"Um export em CSV é um backup?","É meio backup. Um arquivo CSV guarda as linhas de uma tabela e nada sobre como aquela tabela foi construída, então o que dá para reconstruir com ele é uma planilha, e não um banco de dados. Ficam de fora as relações entre as tabelas, os tipos das colunas, as suas políticas de Row Level Security, as suas contas de login e todo arquivo que os seus usuários enviaram. Para devolver uma tabela que alguém esvaziou sem querer é exatamente o que você precisa. Para reconstruir um projeto não basta.",{"q":323,"a":324},"Como faço backup dos usuários de auth do Supabase?","As suas contas de login vivem em um schema de banco separado chamado auth, e é por isso que elas nunca aparecem no Table Editor ao lado das suas tabelas nem caem em um CSV delas. Um dump completo consegue levar esse schema junto. Colocar essas contas para funcionar de novo em outro projeto o Supabase documenta como um trabalho com passos próprios, e não como algo que viaja junto com as suas tabelas. Leia isso antes de precisar, e não durante.",{"q":326,"a":327},"Meu projeto está pausado. Ainda dá para tirar os meus dados?","Retome ele primeiro. O Supabase pausa projetos gratuitos depois de um período de pouca atividade, e um projeto pausado responde a cada requisição com um erro até você levantar ele de novo pelo painel. Uma pausa não é uma exclusão. Com o projeto rodando outra vez, as duas rotas deste artigo funcionam normalmente, e tirar uma cópia nessa hora é a coisa mais óbvia a fazer.",{"q":329,"a":330},"Não é melhor só assinar o Pro?","É o jeito mais barato de ter uma cópia diária automática, e vale a pena. Isso não substitui guardar uma cópia sua, porque as cópias que o Supabase tira ficam dentro da conta do Supabase. Elas cobrem o dia em que você quebra os seus próprios dados, e não o dia em que você perde o acesso à conta. Se a sua app tem clientes de verdade, a resposta costuma ser os dois.","\u002Fblog\u002Fback-up-supabase-free-tier\u002Fcard-800x500.png",[333,334,335,336,337,338],"backups plano gratuito supabase","backup supabase gratis","exportar banco de dados supabase","backup supabase sem cli","baixar banco de dados supabase","copia de seguranca supabase gratuita",{},true,"Backups do plano gratuito do Supabase, sem terminal","\u002Fblog\u002Fback-up-supabase-free-tier","2026-08-30",{"title":5,"description":312},"blog\u002Fback-up-supabase-free-tier",[347,348,349],"Não existem backups do plano gratuito do Supabase. Nada é copiado para lugar nenhum de forma programada, então a única cópia dos seus dados é a que você fez.","O painel exporta uma tabela para CSV em poucos cliques. Isso tira as suas linhas e deixa a estrutura para trás: relações, tipos, políticas, contas de login, arquivos.","Para uma cópia capaz de reconstruir o projeto, um cliente de banco de dados de mesa faz um dump completo no clique. Sem terminal nenhum.","jWNlvHmD-ZvbD2wS7VpkWqDO_sTprz4HC3y37HDqe2g",[352,358,365,371,377,383,389,395,401,407,413,419,425,431,437,443,449,455,461,467,473,479,485,491,497,498,504,510,516,522,528,533,538,544,550,556,561,567,572,578,583,588],{"path":353,"title":354,"description":355,"published":356,"category":309,"image":357,"draft":313},"\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":359,"title":360,"description":361,"published":362,"category":363,"image":364,"draft":313},"\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","Noções de segurança","\u002Fblog\u002Fdomain-and-certificate-expiry\u002Fcard-800x500.png",{"path":366,"title":367,"description":368,"published":369,"category":363,"image":370,"draft":313},"\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":372,"title":373,"description":374,"published":375,"category":363,"image":376,"draft":313},"\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":378,"title":379,"description":380,"published":381,"category":363,"image":382,"draft":313},"\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":384,"title":385,"description":386,"published":387,"category":363,"image":388,"draft":313},"\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":390,"title":391,"description":392,"published":393,"category":363,"image":394,"draft":313},"\u002Fblog\u002Fbase44-source-maps","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":396,"title":397,"description":398,"published":399,"category":363,"image":400,"draft":313},"\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":402,"title":403,"description":404,"published":405,"category":363,"image":406,"draft":313},"\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":408,"title":409,"description":410,"published":411,"category":309,"image":412,"draft":313},"\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":414,"title":415,"description":416,"published":417,"category":309,"image":418,"draft":313},"\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":420,"title":421,"description":422,"published":423,"category":309,"image":424,"draft":313},"\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":426,"title":427,"description":428,"published":429,"category":363,"image":430,"draft":313},"\u002Fblog\u002Fsafest-ai-app-builder","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":432,"title":433,"description":434,"published":435,"category":363,"image":436,"draft":313},"\u002Fblog\u002Fenable-rls-on-every-supabase-table","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":438,"title":439,"description":440,"published":441,"category":363,"image":442,"draft":313},"\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":444,"title":445,"description":446,"published":447,"category":363,"image":448,"draft":313},"\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":450,"title":451,"description":452,"published":453,"category":363,"image":454,"draft":313},"\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":456,"title":457,"description":458,"published":459,"category":363,"image":460,"draft":313},"\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":462,"title":463,"description":464,"published":465,"category":363,"image":466,"draft":313},"\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":468,"title":469,"description":470,"published":471,"category":363,"image":472,"draft":313},"\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":474,"title":475,"description":476,"published":477,"category":363,"image":478,"draft":313},"\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":480,"title":481,"description":482,"published":483,"category":363,"image":484,"draft":313},"\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":486,"title":487,"description":488,"published":489,"category":309,"image":490,"draft":313},"\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":492,"title":493,"description":494,"published":495,"category":363,"image":496,"draft":313},"\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":342,"title":5,"description":312,"published":343,"category":309,"image":331,"draft":313},{"path":499,"title":500,"description":501,"published":502,"category":363,"image":503,"draft":313},"\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":505,"title":506,"description":507,"published":508,"category":363,"image":509,"draft":313},"\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":511,"title":512,"description":513,"published":514,"category":363,"image":515,"draft":313},"\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":517,"title":518,"description":519,"published":520,"category":363,"image":521,"draft":313},"\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":523,"title":524,"description":525,"published":526,"category":309,"image":527,"draft":313},"\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":202,"title":529,"description":530,"published":531,"category":309,"image":532,"draft":313},"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":136,"title":534,"description":535,"published":536,"category":363,"image":537,"draft":313},"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":539,"title":540,"description":541,"published":542,"category":363,"image":543,"draft":313},"\u002Fblog\u002Fgoogle-api-key-exposed-in-frontend","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":545,"title":546,"description":547,"published":548,"category":309,"image":549,"draft":313},"\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":551,"title":552,"description":553,"published":554,"category":363,"image":555,"draft":313},"\u002Fblog\u002Fcan-anyone-read-your-supabase-database","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":557,"title":558,"description":559,"published":554,"category":363,"image":560,"draft":313},"\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":562,"title":563,"description":564,"published":565,"category":363,"image":566,"draft":313},"\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":38,"title":568,"description":569,"published":570,"category":309,"image":571,"draft":313},"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":573,"title":574,"description":575,"published":576,"category":363,"image":577,"draft":313},"\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":579,"title":580,"description":581,"published":576,"category":309,"image":582,"draft":313},"\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":214,"title":584,"description":585,"published":586,"category":309,"image":587,"draft":313},"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":589,"title":590,"description":591,"published":586,"category":363,"image":592,"draft":313},"\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend","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",1790150955903]