[{"data":1,"prerenderedAt":653},["ShallowReactive",2],{"blog-pt-is-supabase-secure":3,"blog-index-pt":411},{"id":4,"title":5,"body":6,"category":367,"cover":368,"coverAlt":369,"description":370,"draft":371,"extension":372,"faq":373,"image":391,"keywords":392,"meta":400,"navigation":401,"ogTitle":25,"path":402,"published":403,"seo":404,"stem":405,"tldr":406,"updated":403,"__hash__":410},"blog_pt\u002Fblog\u002Fis-supabase-secure.md","O Supabase é seguro? É. Seu projeto é outra pergunta",{"type":7,"value":8,"toc":355},"minimark",[9,13,21,26,29,40,43,46,50,53,59,68,71,77,80,84,87,90,93,101,108,112,115,235,238,242,245,251,262,272,277,287,291,313,325,332,336,339,342,345,348],[10,11,12],"p",{},"Alguém te disse que o Supabase não serve para dados reais de usuários. Outra\npessoa te disse que ele está por trás de metade dos apps de que você ouviu falar\neste ano. Os dois estavam confiantes, e nenhum dos dois tinha aberto o seu app.",[10,14,15,16,20],{},"Aqui está a parte que guia após guia erra: ",[17,18,19],"strong",{},"\"o Supabase é seguro\" e \"o meu\nprojeto Supabase é seguro\" são respondidas por duas pessoas diferentes."," O\nSupabase responde a primeira, e responde bem. A segunda é sua, quer alguém tenha\nte avisado que ela foi passada adiante, quer não.",[22,23,25],"h2",{"id":24},"o-supabase-é-seguro","O Supabase é seguro?",[10,27,28],{},"É. Auditores de fora examinaram a plataforma, e as certificações dela estão\nregistradas.",[10,30,31,32,39],{},"O Supabase tem conformidade SOC 2 Type 2 e certificação ISO 27001. Os dados de\nclientes são criptografados em repouso com AES-256 e em trânsito com TLS. Há uma\noferta HIPAA para dados de saúde, que precisa de um add-on e de um acordo\nassinado. Eles fazem testes de invasão regulares com especialistas de fora, e\npublicam tudo isso na\n",[33,34,38],"a",{"href":35,"rel":36},"https:\u002F\u002Fsupabase.com\u002Fsecurity",[37],"nofollow","página de segurança deles",".",[10,41,42],{},"Pense nisso como um prédio. A fundação aguenta, as portas corta-fogo funcionam,\nhá um porteiro na entrada, e na parede há um certificado de alguém que veio\nconferir. É de verdade isso que você está comprando.",[10,44,45],{},"O seu projeto é um apartamento dentro desse prédio.",[22,47,49],{"id":48},"o-que-esse-certificado-cobre-de-fato","O que esse certificado cobre de fato?",[10,51,52],{},"O prédio. O Supabase escreve a fronteira em uma frase só, na própria\ndocumentação SOC 2 deles:",[54,55,56],"blockquote",{},[10,57,58],{},"A conformidade SOC 2 do Supabase não se transfere para ambientes fora do\nproduto Supabase ou fora do controle do Supabase.",[10,60,61,62,67],{},"A mesma página acrescenta que os dados do lado do cliente dessa fronteira são\nresponsabilidade do cliente, e o\n",[33,63,66],{"href":64,"rel":65},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fdeployment\u002Fshared-responsibility-model",[37],"modelo de responsabilidade compartilhada","\ndeles define qual lado é qual. O Supabase cuida da infraestrutura, do sistema\noperacional, das atualizações do Postgres e do monitoramento da plataforma. Do\nseu lado ficam a sua conta e quem tem acesso a ela, os seus dados, os segredos\ndo seu banco e as chaves de API, e o Row Level Security, que essa mesma página\nrecomenda que você sempre aplique.",[10,69,70],{},"Esse último item é este artigo inteiro. Row Level Security é a regra em cada\ntabela dizendo quem pode ler quais linhas. Ela fica desligada até alguém ligar,\ne ligar acontece dentro do seu projeto, numa página que talvez você nunca tenha\naberto.",[72,73],"diagram",{"alt":74,"caption":75,"src":76},"Dois cercados, um dentro do outro. O muro de fora é maciço, marcado com um visto, e traz uma placa de SOC 2; uma requisição passa pelo portão vigiado dele. O muro de dentro, rotulado RLS, tem uma brecha, e a requisição segue por ela até uma pilha de linhas de banco de dados.","O muro de fora é inspecionado e certificado. A requisição que chega às suas linhas passou por uma brecha no muro de dentro, que é o que o seu projeto desenha.","\u002Fblog\u002Fis-supabase-secure\u002Fwhere-the-certificate-stops-1600x760.png",[10,78,79],{},"O certificado é do prédio. A única coisa que a plataforma faz a respeito dos\napartamentos é apontar as portas: o Security Advisor no seu painel nomeia cada\ntabela com a regra desligada, e deixa a decisão com você.",[22,81,83],{"id":82},"então-por-que-tantos-apps-supabase-vazam-dados","Então por que tantos apps Supabase vazam dados?",[10,85,86],{},"Porque tudo o que está do seu lado dessa linha continua funcionando\nperfeitamente enquanto está escancarado.",[10,88,89],{},"Em agosto de 2026 escaneamos 30.998 apps no ar feitos com Lovable, Base44,\nReplit, v0 e Bolt. Em 3.680 deles conseguimos concluir a checagem que pergunta a\num banco, sem login nenhum, se ele vai entregar linhas. 2.096 disseram sim em\npelo menos uma tabela. O Storage contou a mesma história por outro ângulo: dos\n27.269 apps que conseguimos checar, 792 tinham um bucket que um estranho podia\nlistar.",[10,91,92],{},"Nada disso foi uma falha do Supabase. Cada uma dessas respostas veio de um banco\natualizado e criptografado numa plataforma certificada, fazendo exatamente o que\no próprio projeto tinha mandado. O prédio estava bem. As portas de dentro\nestavam abertas.",[10,94,95,96,100],{},"Acontece por causa da ordem em que as coisas são construídas. Seu app funciona\ndesde o primeiro dia, e funciona com as regras escritas ou sem elas, então não\nexiste um momento em que algo quebra e faz você ir olhar. A\n",[33,97,99],{"href":98},"\u002Fblog\u002Fcan-anyone-read-your-supabase-database","medição completa"," explica quanto\ndisso conseguimos ver e quanto não conseguimos.",[10,102,103,104,39],{},"Se você quer a resposta para o seu app em vez de para a plataforma, nosso scan\ngratuito faz a mesma requisição anônima de fora e diz quais das suas tabelas\nresponderam. Uns 20 segundos, sem conta: ",[33,105,107],{"href":106},"\u002F#scan","escanear seu app",[22,109,111],{"id":110},"o-supabase-serve-para-produção","O Supabase serve para produção?",[10,113,114],{},"Serve, e o que você tem que fazer é pouco, porque o Supabase já fez a metade\nlonga.",[116,117,118,134],"table",{},[119,120,121],"thead",{},[122,123,124,128,131],"tr",{},[125,126,127],"th",{},"Assunto",[125,129,130],{},"Quem cuida",[125,132,133],{},"O que significa para você",[135,136,137,149,158,167,177,190,211,223],"tbody",{},[122,138,139,143,146],{},[140,141,142],"td",{},"Patches de servidor, upgrades do Postgres, sistema",[140,144,145],{},"Supabase",[140,147,148],{},"Nada a fazer",[122,150,151,154,156],{},[140,152,153],{},"Criptografia em repouso e em trânsito",[140,155,145],{},[140,157,148],{},[122,159,160,163,165],{},[140,161,162],{},"Segurança física, segurança de rede, pentests",[140,164,145],{},[140,166,148],{},[122,168,169,172,174],{},[140,170,171],{},"Backups do seu banco",[140,173,145],{},[140,175,176],{},"Diários no plano pago, e nenhum no gratuito. Veja em qual você está",[122,178,179,182,187],{},[140,180,181],{},"Quais linhas um visitante pode ler",[140,183,184],{},[17,185,186],{},"Você",[140,188,189],{},"Uma política de Row Level Security em cada tabela com dados reais",[122,191,192,195,199],{},[140,193,194],{},"Qual chave foi parar no seu app",[140,196,197],{},[17,198,186],{},[140,200,201,202,206,207,210],{},"A chave publicável pertence ali. ",[203,204,205],"code",{},"service_role"," e ",[203,208,209],{},"sb_secret_"," nunca",[122,212,213,216,220],{},[140,214,215],{},"Quais arquivos um estranho pode listar",[140,217,218],{},[17,219,186],{},[140,221,222],{},"A marcação de público em cada bucket, separada das regras das suas tabelas",[122,224,225,228,232],{},[140,226,227],{},"Quem consegue entrar na sua conta do Supabase",[140,229,230],{},[17,231,186],{},[140,233,234],{},"Uma senha que mais ninguém tem, e o segundo fator na conta",[10,236,237],{},"Cada linha da metade de baixo é uma configuração, e cada configuração são alguns\nminutos num painel. A plataforma chega pronta para produção. A configuração\nchega no estado em que o seu builder a deixou.",[22,239,241],{"id":240},"como-eu-checo-o-meu-próprio-projeto","Como eu checo o meu próprio projeto?",[10,243,244],{},"Três lugares, e nenhum deles exige que você leia uma linha de SQL.",[10,246,247,250],{},[17,248,249],{},"Abra o Security Advisor no seu painel do Supabase."," Ele lista cada tabela com\no Row Level Security desligado, que é a versão mais crua desse problema, e o\nSupabase é bom em sinalizar isso. Um projeto com essa lista vazia resolveu a\nprimeira pergunta.",[10,252,253,256,257,261],{},[17,254,255],{},"Depois leia a política de qualquer tabela que guarde pessoas."," O Advisor não\nconsegue decidir se uma política permissiva foi de propósito, porque num\ncatálogo de produtos ela estaria certa. Uma tabela pode ter a chave ligada, uma\npolítica válida e um visto verde no painel, e mesmo assim entregar suas linhas a\nqualquer um que pergunte;\n",[33,258,260],{"href":259},"\u002Fblog\u002Fsupabase-rls-on-but-table-still-public","os quatro estados em que uma tabela pode estar","\nmostram como reconhecer o seu.",[10,263,264,267,268,39],{},[17,265,266],{},"Depois olhe o Storage."," Buckets têm configurações próprias e as regras das\nsuas tabelas não chegam até lá, então um banco bem fechado não diz nada sobre\n",[33,269,271],{"href":270},"\u002Fblog\u002Fsupabase-storage-bucket-public","os arquivos que seus usuários subiram",[72,273],{"alt":274,"caption":275,"src":276},"Um muro externo grosso com uma placa de SOC 2 marcada com um visto atravessa o fundo. Na frente dele há um cercado menor com três portas, cada uma rotulada em fonte monoespaçada: RLS, public e service_role.","O muro de trás quem inspeciona é outra pessoa. Estas três maçanetas estão dentro do seu próprio projeto, e cada uma é uma página do seu painel.","\u002Fblog\u002Fis-supabase-secure\u002Fthree-doors-you-own-1600x700.png",[10,278,279,280,284,285,39],{},"Há uma quarta pergunta que o painel não consegue responder: qual chave foi\nrealmente parar no seu app. A página de configurações lista as chaves que o seu\nprojeto tem, e o seu app é o único lugar que registra qual delas entrou. Ler a\nchave na sua própria página no ar é\n",[33,281,283],{"href":282},"\u002Fblog\u002Fwhich-api-keys-are-safe-in-your-frontend","coisa de dois minutos",", ou\nnosso scan gratuito lê para você junto com tudo acima:\n",[33,286,107],{"href":106},[22,288,290],{"id":289},"o-que-fazer-agora","O que fazer agora",[292,293,294],"key-takeaways",{},[295,296,297,301,304,307,310],"ul",{},[298,299,300],"li",{},"Pare de perguntar se o Supabase é seguro. Ele é, com um relatório SOC 2 Type 2, ISO 27001, criptografia AES-256 em repouso e testes de invasão regulares por trás da afirmação.",[298,302,303],{},"Leia a fronteira com as palavras deles. A conformidade cobre o produto Supabase, e suas políticas de Row Level Security, suas chaves e seus buckets ficam do seu lado.",[298,305,306],{},"Abra o Security Advisor primeiro. Custa um minuto e responde a versão mais crua da pergunta.",[298,308,309],{},"Leia a política de cada tabela que guarde pessoas, porque uma política permissiva aparece no painel como uma tabela protegida.",[298,311,312],{},"Cheque o Storage separado das suas tabelas. Os dois têm configurações diferentes e um banco rígido não diz nada sobre os seus arquivos.",[10,314,315,316,320,321,39],{},"Se você preferir percorrer tudo como uma lista, o\n",[33,317,319],{"href":318},"\u002Fchecklist","checklist de segurança de 10 minutos"," cobre isso junto com as\noutras configurações que vale fechar num app recém-lançado, e existe uma\nexplicação em linguagem simples para\n",[33,322,324],{"href":323},"\u002Fis-your-supabase-app-safe","apps Supabase",[10,326,327,328,39],{},"Percorrer essa lista é uma noite, e a resposta que ela te dá é verdadeira na\nnoite em que você faz. Manter essa resposta verdadeira é a parte que não cabe em\numa noite, e foi para isso que construímos o Reeve Care: ele repete essas mesmas\nchecagens no seu app numa programação e te escreve quando uma delas começa a\nresponder diferente. ",[33,329,331],{"href":330},"\u002F#pricing","O que ele vigia e quanto custa",[22,333,335],{"id":334},"o-reeve-guarda-uma-cópia-do-seu-banco-supabase","O Reeve guarda uma cópia do seu banco Supabase",[10,337,338],{},"Fora da conta de onde ela veio, numa programação, e verificada antes de contar.\nA primeira dessas três é a que os backups do próprio Supabase não conseguem\nfazer por você.",[10,340,341],{},"O Supabase tira uma cópia diária no plano pago e nenhuma no gratuito, e nos dois\ncasos essa cópia vive dentro do projeto de onde foi tirada. É a ferramenta certa\npara a tarde em que você quebra seus próprios dados. Ela fica fora de alcance no\ndia em que o problema é a própria conta: um pagamento que falha, uma exclusão,\num login em que ninguém mais entra.",[10,343,344],{},"O Reeve Care guarda uma cópia em outro lugar. Tirada na programação que seu\nplano define, criptografada antes de sair da máquina que a produziu, e relida e\nconferida antes de contarmos como backup, para que a data no seu painel seja a\ndata em que uma cópia foi comprovadamente existente e não a data em que um job\ncomeçou. Ela cobre o seu banco Supabase, e os arquivos que seus usuários subiram\nassim que você os conecta.",[10,346,347],{},"Uma restauração faz três coisas em volta da reposição em si. Ela confere se a\ncópia ainda cabe no seu banco antes de devolver uma única linha, tira primeiro\num snapshot de segurança do que está lá agora, e depois prova que o banco aceita\nescrita escrevendo nele, porque uma restauração que te deixa em somente leitura\nnão terminou. Você também pode baixar qualquer cópia que a gente tenha e ir\nembora com ela.",[10,349,350,351,39],{},"Cada checagem desta página diz onde o seu app está hoje. Os backups são para o\ndia em que alguma coisa já deu errado.\n",[33,352,354],{"href":353},"\u002Fsupabase-backups","O que o Reeve copia no Supabase, com que frequência, e o que uma restauração faz",{"title":356,"searchDepth":357,"depth":357,"links":358},"",3,[359,361,362,363,364,365,366],{"id":24,"depth":360,"text":25},2,{"id":48,"depth":360,"text":49},{"id":82,"depth":360,"text":83},{"id":110,"depth":360,"text":111},{"id":240,"depth":360,"text":241},{"id":289,"depth":360,"text":290},{"id":334,"depth":360,"text":335},"Noções de segurança","\u002Fblog\u002Fis-supabase-secure\u002Fcover-1200x630.png","Um prédio de janelas acesas com uma folha aberta num andar alto, deixando um vão escuro numa fachada que no resto está fechada.","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.",false,"md",[374,377,380,383,385,388],{"q":375,"a":376},"O Supabase é seguro o bastante para dados reais de clientes?","É. O Supabase tem conformidade SOC 2 Type 2 e certificação ISO 27001, criptografa dados de clientes em repouso com AES-256 e em trânsito com TLS, e faz testes de invasão regulares. O que isso não diz é se as regras dentro do seu próprio projeto deixam um estranho ler suas tabelas, porque essa configuração pertence ao seu projeto e não à plataforma.",{"q":378,"a":379},"O Supabase tem conformidade SOC 2?","Tem, SOC 2 Type 2. Clientes Enterprise e Team podem pedir o relatório pelo painel. O escopo é o produto Supabase em si: a infraestrutura deles, os controles deles, o monitoramento deles.",{"q":381,"a":382},"O relatório SOC 2 do Supabase cobre o meu app?","Não, e o Supabase diz isso por escrito. A documentação SOC 2 deles afirma que a conformidade não se transfere para ambientes fora do produto Supabase ou fora do controle do Supabase, e que os dados do lado do cliente dessa fronteira são responsabilidade do cliente. Suas políticas de Row Level Security, suas chaves de API e suas configurações de Storage estão todas do seu lado.",{"q":111,"a":384},"Serve, e o trabalho do seu lado é curto. Ligue o Row Level Security em cada tabela com dados reais e escreva uma política que nomeie uma condição, mantenha a chave secreta fora de tudo o que seus visitantes baixam, e veja quais buckets de Storage estão marcados como públicos. São essas três configurações que decidem se um estranho chega aos seus dados, e é por elas que começamos quando escaneamos um app.",{"q":386,"a":387},"O Supabase tem conformidade HIPAA?","O Supabase oferece conformidade HIPAA, e ela não vem ligada sozinha. Exige o add-on de HIPAA e um Business Associate Agreement assinado, e a documentação deles é explícita em que SOC 2 não substitui isso. Informações de saúde protegidas também trazem regras sobre onde você pode colocá-las, entre elas a instrução de não guardá-las em buckets públicos de Storage.",{"q":389,"a":390},"O Supabase é mais seguro do que fazer meu próprio backend?","Nas partes que o Supabase cuida, quase com certeza. Aplicar patches em servidores, atualizar o banco, criptografar em repouso, segurança de rede e um regime de acesso auditado são coisas que quem trabalha sozinho raramente faz com o mesmo cuidado. As partes que continuam suas são as mesmas nos dois casos, e com um backend próprio existe mais uma: o código entre o seu app e o seu banco.","\u002Fblog\u002Fis-supabase-secure\u002Fcard-800x500.png",[393,394,395,396,397,398,399],"supabase é seguro","o supabase é seguro","supabase e seguro","segurança do supabase","supabase é seguro para produção","supabase shared responsibility model","supabase soc 2",{},true,"\u002Fblog\u002Fis-supabase-secure","2026-08-29",{"title":5,"description":370},"blog\u002Fis-supabase-secure",[407,408,409],"O Supabase é seguro? A plataforma é: SOC 2 Type 2, ISO 27001, AES-256 em repouso, TLS em trânsito e testes de invasão regulares.","A própria documentação SOC 2 do Supabase diz que essa conformidade termina na borda do produto deles. Suas tabelas, suas chaves e seus buckets de Storage ficam do outro lado dessa linha.","Escaneamos 30.998 apps no ar em agosto de 2026. Em 2.096 dos 3.680 que conseguimos checar, uma tabela respondeu a um estranho, numa plataforma que funcionava exatamente como foi projetada.","BrsJapiXFhej2P8NrVbz27XGmiNndGIp2wCQ4Dk2RR8",[412,419,425,431,437,443,449,455,461,467,473,479,485,491,497,503,509,515,521,527,533,539,545,551,557,563,564,570,576,582,588,594,599,605,611,616,621,627,633,638,643,649],{"path":413,"title":414,"description":415,"published":416,"category":417,"image":418,"draft":371},"\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","Backups","\u002Fblog\u002Fsupabase-backup-auth-users\u002Fcard-800x500.png",{"path":420,"title":421,"description":422,"published":423,"category":367,"image":424,"draft":371},"\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":426,"title":427,"description":428,"published":429,"category":367,"image":430,"draft":371},"\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":432,"title":433,"description":434,"published":435,"category":367,"image":436,"draft":371},"\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":438,"title":439,"description":440,"published":441,"category":367,"image":442,"draft":371},"\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":444,"title":445,"description":446,"published":447,"category":367,"image":448,"draft":371},"\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":450,"title":451,"description":452,"published":453,"category":367,"image":454,"draft":371},"\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":456,"title":457,"description":458,"published":459,"category":367,"image":460,"draft":371},"\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":462,"title":463,"description":464,"published":465,"category":367,"image":466,"draft":371},"\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":468,"title":469,"description":470,"published":471,"category":417,"image":472,"draft":371},"\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":474,"title":475,"description":476,"published":477,"category":417,"image":478,"draft":371},"\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":480,"title":481,"description":482,"published":483,"category":417,"image":484,"draft":371},"\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":486,"title":487,"description":488,"published":489,"category":367,"image":490,"draft":371},"\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":492,"title":493,"description":494,"published":495,"category":367,"image":496,"draft":371},"\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":498,"title":499,"description":500,"published":501,"category":367,"image":502,"draft":371},"\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":504,"title":505,"description":506,"published":507,"category":367,"image":508,"draft":371},"\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":510,"title":511,"description":512,"published":513,"category":367,"image":514,"draft":371},"\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":516,"title":517,"description":518,"published":519,"category":367,"image":520,"draft":371},"\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":522,"title":523,"description":524,"published":525,"category":367,"image":526,"draft":371},"\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":528,"title":529,"description":530,"published":531,"category":367,"image":532,"draft":371},"\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":534,"title":535,"description":536,"published":537,"category":367,"image":538,"draft":371},"\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":540,"title":541,"description":542,"published":543,"category":367,"image":544,"draft":371},"\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":546,"title":547,"description":548,"published":549,"category":417,"image":550,"draft":371},"\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":552,"title":553,"description":554,"published":555,"category":367,"image":556,"draft":371},"\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":558,"title":559,"description":560,"published":561,"category":417,"image":562,"draft":371},"\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":402,"title":5,"description":370,"published":403,"category":367,"image":391,"draft":371},{"path":565,"title":566,"description":567,"published":568,"category":367,"image":569,"draft":371},"\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":571,"title":572,"description":573,"published":574,"category":367,"image":575,"draft":371},"\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":577,"title":578,"description":579,"published":580,"category":367,"image":581,"draft":371},"\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":583,"title":584,"description":585,"published":586,"category":417,"image":587,"draft":371},"\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":589,"title":590,"description":591,"published":592,"category":417,"image":593,"draft":371},"\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":270,"title":595,"description":596,"published":597,"category":367,"image":598,"draft":371},"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":600,"title":601,"description":602,"published":603,"category":367,"image":604,"draft":371},"\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":606,"title":607,"description":608,"published":609,"category":417,"image":610,"draft":371},"\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":98,"title":612,"description":613,"published":614,"category":367,"image":615,"draft":371},"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":617,"title":618,"description":619,"published":614,"category":367,"image":620,"draft":371},"\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":622,"title":623,"description":624,"published":625,"category":367,"image":626,"draft":371},"\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":628,"title":629,"description":630,"published":631,"category":417,"image":632,"draft":371},"\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":259,"title":634,"description":635,"published":636,"category":367,"image":637,"draft":371},"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":639,"title":640,"description":641,"published":636,"category":417,"image":642,"draft":371},"\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":644,"title":645,"description":646,"published":647,"category":417,"image":648,"draft":371},"\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":282,"title":650,"description":651,"published":647,"category":367,"image":652,"draft":371},"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",1790150955906]