[{"data":1,"prerenderedAt":989},["ShallowReactive",2],{"blog-pt-does-supabase-encrypt-my-data":3,"blog-index-pt":634},{"id":4,"title":5,"body":6,"category":589,"cover":590,"coverAlt":591,"description":592,"draft":593,"extension":594,"faq":595,"image":611,"keywords":612,"meta":623,"navigation":624,"ogTitle":26,"path":625,"published":626,"seo":627,"stem":628,"tldr":629,"updated":626,"__hash__":633},"blog_pt\u002Fblog\u002Fdoes-supabase-encrypt-my-data.md","O Supabase criptografa meus dados? Sim. Veja o que isso impede",{"type":7,"value":8,"toc":572},"minimark",[9,13,16,19,22,27,38,45,61,79,145,149,152,155,158,161,167,171,174,177,194,198,201,210,216,225,237,241,244,247,251,260,263,267,270,273,281,300,303,307,310,319,328,332,335,449,452,456,459,470,482,487,490,494,499,535,542,546,566],[10,11,12],"p",{},"Um cliente escreve perguntando se os dados dele estão criptografados. Ou um\ncliente maior manda um questionário de segurança numa planilha, e nele estão as\nlinhas que todo questionário tem: criptografia em repouso, criptografia em\ntrânsito, o relatório SOC 2 do seu provedor de hospedagem. O seu app roda no\nSupabase porque o Lovable ou o Bolt configurou assim, e até hoje ninguém\nprecisava que você soubesse o que nada disso quer dizer.",[10,14,15],{},"Então, o Supabase criptografa os seus dados? Sim. Todos, em todos os planos, e\nos certificados por trás dessa afirmação são reais.",[10,17,18],{},"A maioria das respostas erra ao parar aí, como se a criptografia decidisse quem\npode ler os seus dados. Ela decide algo mais estreito. Pense no Supabase como um\nbanco. A criptografia em repouso é o cofre, a criptografia em trânsito é o\ncarro-forte, e o SOC 2 é o inspetor que confere se os dois funcionam do jeito\nque o banco diz. Cada um trata de alguém que nunca deveria ter entrado. A regra\ndo guichê, a que diz de quem um cliente pode pedir o extrato, é outra coisa, e\nela é escrita no seu projeto.",[10,20,21],{},"Cada número abaixo foi lido nas páginas e na documentação do Supabase em 29 de\nsetembro de 2026.",[23,24,26],"h2",{"id":25},"o-supabase-criptografa-meus-dados","O Supabase criptografa meus dados?",[10,28,29,30,37],{},"Sim. A ",[31,32,36],"a",{"href":33,"rel":34},"https:\u002F\u002Fsupabase.com\u002Fsecurity",[35],"nofollow","página de segurança"," do Supabase diz que\ntodos os dados dos clientes são criptografados em repouso com AES-256 e em\ntrânsito com TLS, e você não precisa ativar nada.",[10,39,40,44],{},[41,42,43],"strong",{},"Em repouso"," quer dizer nos discos. O seu banco de dados é gravado no\narmazenamento de forma criptografada, então uma cópia do disco levada das\nmáquinas do Supabase é ilegível sozinha.",[10,46,47,50,51,56,57,60],{},[41,48,49],{},"Em trânsito"," quer dizer no caminho entre o seu visitante e o Supabase. O seu\napp conversa com o Supabase pelas APIs web dele, para dados, logins e arquivos,\ne o\n",[31,52,55],{"href":53,"rel":54},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fplatform\u002Fssl-enforcement",[35],"guia de obrigatoriedade de SSL","\ndo Supabase diz que cada uma dessas APIs recusa uma conexão sem criptografia. A\nexceção é uma conexão direta ao banco Postgres que fica por baixo, do tipo que\numa ferramenta de backup ou um servidor seu pode abrir. Essas aceitam uma\nconexão sem criptografia até você ativar\n",[41,58,59],{},"Enforce SSL on incoming connections"," em Database Settings. Os navegadores dos\nseus visitantes nunca abrem uma.",[10,62,63,66,67,72,73,78],{},[41,64,65],{},"A criptografia de colunas"," é a única camada que fica desligada. Ela mantém um\nvalor específico, um número de telefone por exemplo, embaralhado mesmo dentro do\nbanco. O Supabase documentava um jeito de fazer isso, e a\n",[31,68,71],{"href":69,"rel":70},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fdatabase\u002Fextensions\u002Fpgsodium",[35],"página do pgsodium","\nagora desaconselha esse recurso, citando a complexidade operacional e o risco de\nconfigurá-lo errado, e acrescenta que a criptografia em repouso provavelmente\nbasta para SOC 2 e HIPAA. Para segredos como a chave de API de um serviço\nexterno existe o ",[31,74,77],{"href":75,"rel":76},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fdatabase\u002Fvault",[35],"Vault",", que\nos guarda criptografados e os devolve por meio de uma view.",[80,81,82,98],"table",{},[83,84,85],"thead",{},[86,87,88,92,95],"tr",{},[89,90,91],"th",{},"Camada",[89,93,94],{},"Ativa por padrão",[89,96,97],{},"Contra o que protege",[99,100,101,113,124,135],"tbody",{},[86,102,103,107,110],{},[104,105,106],"td",{},"Em repouso, AES-256",[104,108,109],{},"Sim, em todos os planos",[104,111,112],{},"Uma cópia do disco lida sem passar pelo Supabase",[86,114,115,118,121],{},[104,116,117],{},"Em trânsito, TLS",[104,119,120],{},"Sim em toda API. No Postgres direto, quando você torna o SSL obrigatório",[104,122,123],{},"Alguém lendo o tráfego entre um app e o Supabase",[86,125,126,129,132],{},[104,127,128],{},"Criptografia de colunas",[104,130,131],{},"Não, e o Supabase desaconselha o recurso que oferecia",[104,133,134],{},"Um valor específico lido por quem pode consultar a tabela",[86,136,137,139,142],{},[104,138,77],{},[104,140,141],{},"Para cada segredo que você guarda nele",[104,143,144],{},"Um segredo legível no disco ou num arquivo de backup",[23,146,148],{"id":147},"contra-o-que-a-criptografia-do-supabase-protege","Contra o que a criptografia do Supabase protege?",[10,150,151],{},"Contra qualquer um que chegue aos seus dados sem pedi-los ao banco. Quem leva um\ndisco embora, copia um arquivo de backup ou escuta o tráfego entre um navegador\ne o Supabase recebe bytes embaralhados e mais nada.",[10,153,154],{},"Uma requisição que o banco decide responder é outra história. A criptografia em\nrepouso trabalha por baixo do Postgres, então o banco lê os próprios arquivos em\ntexto claro, para cada consulta que atende. Quais consultas ele atende é\ndefinido pelas permissões de cada tabela. No Supabase isso é a Row Level\nSecurity, a regra que diz quais linhas cada visitante pode ler, e cada tabela\nprecisa dela ligada, com uma regra escrita para ela.",[10,156,157],{},"Esse é o guichê do banco. O cofre se abre para o caixa toda vez, porque o caixa\ntrabalha para o banco. Se ninguém deixou escrito de quem um cliente pode ver os\nextratos, o caixa entrega o que for pedido, e o carro-forte leva, lacrado o\ncaminho inteiro, até quem pediu.",[10,159,160],{},"A documentação do Supabase diz o mesmo sobre o Vault, que de fato criptografa\nvalores dentro do banco: \"qualquer pessoa que tenha acesso à view tem acesso aos\nsegredos descriptografados.\"",[162,163],"diagram",{"alt":164,"caption":165,"src":166},"Três caminhos saindo do mesmo banco de dados com cadeado. Um disco levado embora e um cabo com cadeado só entregam blocos embaralhados a uma lupa. Um navegador que envia uma requisição com a chave anon recebe as linhas por um canal com cadeado, e elas chegam legíveis.","A criptografia impede os dois primeiros caminhos. O terceiro é uma pergunta que o banco responde, e para responder ele descriptografa.","\u002Fblog\u002Fdoes-supabase-encrypt-my-data\u002Fwhat-encryption-stops-1600x720.png",[23,168,170],{"id":169},"a-criptografia-impede-um-estranho-de-ler-minhas-tabelas","A criptografia impede um estranho de ler minhas tabelas?",[10,172,173],{},"Não, e medimos com que frequência isso importa. Em agosto de 2026 escaneamos\n30.998 apps publicados, feitos com Lovable, Base44, Replit, v0 e Bolt. Em 3.680\ndeles conseguimos concluir a verificação que pergunta a um banco Supabase, sem\nlogin, se uma tabela vai entregar suas linhas. Em 2.096, ou 57%, pelo menos uma\ntabela entregava, e 394 deles tinham uma tabela aberta com nome de pessoas:\nusers, profiles, customers, orders.",[10,175,176],{},"Cada um desses bancos estava criptografado em repouso o tempo todo, pela própria\ndescrição que a plataforma faz de como funciona, e qualquer estranho que\npedisse teria recebido as linhas por TLS. Nada na criptografia falhou, e ela não\nteve papel nenhum em decidir quem recebia uma resposta.",[10,178,179,180,184,185,188,189,193],{},"A requisição em si é comum. É a mesma que o seu app faz para mostrar os pedidos\na um cliente logado, enviada sem o login: a chave pública que deve estar na sua\npágina, e um ",[181,182,183],"code",{},"GET"," para ",[181,186,187],{},"\u002Frest\u002Fv1\u002F"," com o nome de uma tabela no fim. O nosso\nscan leu quantas linhas cada tabela devolveria e parou ali, sem baixar nenhuma.\n",[31,190,192],{"href":191},"\u002Fblog\u002Fcan-anyone-read-your-supabase-database","A medição completa"," explica do\nque esses 57% são uma parte e quanto não conseguimos ver.",[23,195,197],{"id":196},"o-supabase-está-em-conformidade-com-o-soc-2","O Supabase está em conformidade com o SOC 2?",[10,199,200],{},"Sim. O Supabase tem um relatório SOC 2 Type 2 de um auditor independente,\nrenovado todo ano.",[10,202,203,204,209],{},"Um relatório SOC 2 é o relato de um auditor sobre se os controles de segurança\nde uma empresa funcionaram do jeito que a empresa diz. Type 2 significa que eles\nforam testados durante um período inteiro, e o do Supabase vai de 1º de março a\n28 de fevereiro. Ele cobre segurança, disponibilidade, integridade do\nprocessamento, confidencialidade e privacidade, no banco de dados, Storage,\nAuth, Realtime, Edge Functions e na Data API, e a\n",[31,205,208],{"href":206,"rel":207},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fsecurity\u002Fsoc-2-compliance",[35],"página de SOC 2"," do\nSupabase marca onde ele termina:",[211,212,213],"blockquote",{},[10,214,215],{},"A conformidade SOC 2 do Supabase não se transfere para ambientes fora do\nproduto Supabase ou fora do controle do Supabase.",[10,217,218,219,224],{},"No banco, é o relatório do inspetor sobre o cofre e os carros-fortes. As regras\ndas suas tabelas ficam de fora, porque quem as escreve é você: o\n",[31,220,223],{"href":221,"rel":222},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fdeployment\u002Fshared-responsibility-model",[35],"modelo de responsabilidade compartilhada","\ndo Supabase coloca a gestão de acessos e a aplicação de controles de segurança\nentre as coisas pelas quais o cliente é sempre responsável.",[10,226,227,228,231,232,236],{},"Daí saem mais duas coisas. Se um cliente precisa que a ",[41,229,230],{},"sua"," empresa esteja\nem conformidade com o SOC 2, a página de SOC 2 do Supabase diz que um cliente\nnessa situação tem de implantar os controles e passar pela própria auditoria. E\nse o Supabase é uma plataforma sólida para construir em cima é\n",[31,233,235],{"href":234},"\u002Fblog\u002Fis-supabase-secure","outra pergunta, com um artigo próprio",".",[23,238,240],{"id":239},"como-consigo-o-relatório-soc-2-do-supabase","Como consigo o relatório SOC 2 do Supabase?",[10,242,243],{},"No painel da sua organização, a partir do plano Team. Ele fica em Legal\nDocuments, ao lado do certificado ISO 27001 e do questionário de segurança\npadrão do Supabase, e uma organização no Free ou no Pro encontra ali um botão\nde upgrade no lugar.",[10,245,246],{},"O Team começa em $599 por mês, enquanto o Pro começa em $25, então vale saber o\nque a diferença compra. A documentação do Supabase diz que todo projeto segue o\nmesmo conjunto de controles de conformidade, então um projeto no Pro roda na\nmesma plataforma auditada. O Team acrescenta os documentos, junto com login\núnico para o painel, backups diários guardados por 14 dias onde o Pro guarda 7,\ne o acesso à HIPAA. Se um cliente pedir o relatório em si, pergunte se a página\npública de segurança do Supabase basta antes de trocar de plano por um PDF.",[23,248,250],{"id":249},"o-supabase-tem-certificação-iso-27001","O Supabase tem certificação ISO 27001?",[10,252,253,254,259],{},"Sim, pela ISO\u002FIEC 27001:2022, o que o Supabase\n",[31,255,258],{"href":256,"rel":257},"https:\u002F\u002Fsupabase.com\u002Fblog\u002Fsupabase-is-now-iso-27001-certified",[35],"anunciou"," em 22\nde abril de 2026.",[10,261,262],{},"A ISO 27001 certifica um sistema de gestão: as políticas, as avaliações de risco\ne os processos que uma empresa usa para cuidar das informações que guarda. Um\nauditor credenciado emite o certificado por três anos e volta todo ano nesse\nmeio-tempo para conferir se o sistema continua funcionando. No banco, é o\ninspetor que examina como os procedimentos de segurança são definidos e mantidos\nem dia. O anúncio do Supabase descreve o SOC 2 como amplamente aceito na América\ndo Norte e a ISO 27001 como amplamente aceita na Europa, na Ásia e no setor\npúblico. O certificado fica na mesma seção Legal Documents, nos mesmos planos.",[23,264,266],{"id":265},"o-supabase-está-em-conformidade-com-a-hipaa","O Supabase está em conformidade com a HIPAA?",[10,268,269],{},"Pode estar, para o seu projeto, depois que você assina um Business Associate\nAgreement com o Supabase e paga o add-on de HIPAA. Não é automático, e a página\nde SOC 2 do Supabase diz que o SOC 2 não o substitui.",[10,271,272],{},"Um Business Associate Agreement, ou BAA, é o contrato escrito que a lei de saúde\ndos Estados Unidos exige antes que uma empresa possa tratar informações de saúde\nprotegidas em seu nome. O Supabase assina um a partir do plano Team. O add-on\nnão tem preço publicado: você envia um pedido, o Supabase responde com o preço e\no processo, e uma organização no Free ou no Pro que se candidata ainda precisa\npassar para o Team depois de aprovada.",[10,274,275,276,280],{},"A assinatura é onde começa a sua parte. O\n",[31,277,223],{"href":278,"rel":279},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fdeployment\u002Fshared-responsibility-model#managing-healthcare-data",[35],"\ndo Supabase lista o que um cliente HIPAA precisa fazer, e estes são os itens que\no dono de um app tem menos chance de já conhecer:",[282,283,284,288,291,294,297],"ul",{},[285,286,287],"li",{},"Marcar o projeto como projeto HIPAA, e agir sobre o que o Security Advisor\napontar sobre ele.",[285,289,290],{},"Ativar o login em duas etapas em todas as contas da organização no Supabase.",[285,292,293],{},"Ativar a recuperação a um ponto no tempo, que precisa de pelo menos o add-on\nde computação Small.",[285,295,296],{},"Ativar a obrigatoriedade de SSL e as restrições de rede.",[285,298,299],{},"Manter dados de saúde fora de buckets de armazenamento públicos.",[10,301,302],{},"A criptografia em repouso e em trânsito também está nessa lista, e é o único\nitem que o Supabase já fez.",[23,304,306],{"id":305},"o-supabase-está-em-conformidade-com-o-gdpr","O Supabase está em conformidade com o GDPR?",[10,308,309],{},"O Supabase dá suporte a apps em conformidade com o GDPR e fornece as duas peças\nque só ele pode fornecer. Se o seu app está em conformidade depende do que ele\nfaz com os dados das pessoas.",[10,311,312,313,318],{},"A primeira peça é o local. Você escolhe uma região ao criar um projeto, e uma\nregião específica da UE mantém ali o seu banco de dados, o Auth e o Storage.\nEscolha a região pelo nome, porque a opção geral Europa do Supabase também\ninclui Londres e Zurique. A segunda é o\n",[31,314,317],{"href":315,"rel":316},"https:\u002F\u002Fsupabase.com\u002Flegal\u002Fdpa",[35],"Data Processing Addendum",", o contrato de\ntratamento de dados que o GDPR exige entre você e uma empresa que trata dados\npessoais por você. O do Supabase faz parte dos termos de serviço, então toda\norganização já tem um.",[10,320,321,322,327],{},"O resto fica com o seu app: por que você coleta cada campo, como as pessoas\nconsentem, quem pode ler e como você apaga quando pedem. A\n",[31,323,326],{"href":324,"rel":325},"https:\u002F\u002Fsupabase.com\u002Fdocs\u002Fguides\u002Fsecurity\u002Fgdpr-compliance",[35],"página do GDPR"," do\nSupabase diz com todas as letras que escolher uma região não deixa uma aplicação\nem conformidade sozinha. O que o seu app deve perante a lei é uma pergunta para\num advogado.",[23,329,331],{"id":330},"como-respondo-ao-questionário-de-segurança-de-um-cliente","Como respondo ao questionário de segurança de um cliente?",[10,333,334],{},"Separe em duas pilhas antes de escrever qualquer coisa. Algumas linhas\nperguntam sobre a plataforma do Supabase e se respondem com os documentos do\nSupabase. As outras perguntam sobre o seu projeto, e você é a única pessoa que\npode respondê-las.",[80,336,337,350],{},[83,338,339],{},[86,340,341,344,347],{},[89,342,343],{},"O questionário pergunta",[89,345,346],{},"Quem responde",[89,348,349],{},"Onde está a resposta",[99,351,352,363,373,383,393,404,419,429,439],{},[86,353,354,357,360],{},[104,355,356],{},"Os dados são criptografados em repouso?",[104,358,359],{},"Supabase",[104,361,362],{},"AES-256, na página de segurança do Supabase",[86,364,365,368,370],{},[104,366,367],{},"Os dados são criptografados em trânsito?",[104,369,359],{},[104,371,372],{},"TLS em toda API, e nas conexões diretas ao Postgres quando você torna o SSL obrigatório",[86,374,375,378,380],{},[104,376,377],{},"O seu fornecedor tem SOC 2 ou ISO 27001?",[104,379,359],{},[104,381,382],{},"Os dois, com os documentos para baixar no Team ou no Enterprise",[86,384,385,388,390],{},[104,386,387],{},"Você tem um DPA com os seus operadores de dados?",[104,389,359],{},[104,391,392],{},"Faz parte dos termos de serviço do Supabase",[86,394,395,398,401],{},[104,396,397],{},"Onde os dados ficam armazenados?",[104,399,400],{},"Você",[104,402,403],{},"A região que você escolheu ao criar o projeto",[86,405,406,409,412],{},[104,407,408],{},"Com que frequência os dados têm backup?",[104,410,411],{},"O seu plano",[104,413,414,415],{},"Nada automático no Free, diário no Pro. ",[31,416,418],{"href":417},"\u002Fblog\u002Fsupabase-free-plan-limits","O que cada plano guarda",[86,420,421,424,426],{},[104,422,423],{},"Quem pode ler quais registros?",[104,425,400],{},[104,427,428],{},"A política de Row Level Security de cada tabela",[86,430,431,434,436],{},[104,432,433],{},"Onde ficam as credenciais?",[104,435,400],{},[104,437,438],{},"A chave secreta só num servidor. A chave publicável foi feita para ser pública",[86,440,441,444,446],{},[104,442,443],{},"Quem tem acesso administrativo?",[104,445,400],{},[104,447,448],{},"Os membros da sua organização no Supabase, com verificação em duas etapas",[10,450,451],{},"As linhas do Supabase se copiam direto dos documentos dele. As três últimas são\nas que o cliente queria descobrir quando mandou o questionário, e respondê-las\nexige o seu próprio projeto aberto na sua frente.",[23,453,455],{"id":454},"o-que-digo-a-um-cliente-que-pergunta-quem-pode-ler-os-dados","O que digo a um cliente que pergunta quem pode ler os dados?",[10,457,458],{},"O estado das suas políticas, tabela por tabela, e a data em que você as\nverificou pela última vez. \"Os dados são criptografados\" responde a uma pergunta\nsobre discos roubados, e um cliente que pergunta sobre acesso está perguntando\nsobre o guichê.",[10,460,461,462,465,466,469],{},"Uma resposta direta nomeia as tabelas que guardam dados pessoais e diz que cada\numa tem a Row Level Security ligada, com uma política que prende cada linha à\npessoa logada a quem ela pertence. Diz quando você verificou pela última vez,\nde fora, como visitante sem login, que essas tabelas não devolviam nada. Se uma\ntabela é pública de propósito, uma lista de produtos ou posts publicados, ela\ndiz isso também. Depois, o lado administrativo: quem pode abrir o seu painel do\nSupabase, com verificação em duas etapas, e onde fica a chave secreta. Essa\nchave se chama ",[181,463,464],{},"service_role"," nos projetos mais antigos e ",[181,467,468],{},"sb_secret_…"," nos mais\nnovos, e o lugar dela é num servidor.",[10,471,472,473,477,478,236],{},"Para descobrir o estado das suas tabelas, comece pelo Security Advisor no seu\npainel do Supabase, que lista cada tabela com a Row Level Security desligada.\nUma tabela pode passar nessa verificação e continuar aberta, por uma política\nque deixa todo mundo entrar.\n",[31,474,476],{"href":475},"\u002Fblog\u002Fsupabase-rls-on-but-table-still-public","Os quatro estados em que uma tabela pode estar","\nmostram como diferenciá-los, e há um guia em linguagem simples para\n",[31,479,481],{"href":480},"\u002Fis-your-supabase-app-safe","apps Supabase",[162,483],{"alt":484,"caption":485,"src":486},"A mesma requisição anônima, marcada anon, enviada a duas tabelas com um cadeado idêntico. Uma tem uma política servindo de barreira na frente e não devolve nada. A outra não tem e devolve todas as linhas.","As duas tabelas são criptografadas exatamente do mesmo jeito. A política é a única diferença entre as duas respostas.","\u002Fblog\u002Fdoes-supabase-encrypt-my-data\u002Fsame-lock-two-answers-1600x680.png",[10,488,489],{},"Ponha por escrito só o que você verificou. Se ainda não leu a política de uma\ntabela, diga a data até a qual vai ler.",[23,491,493],{"id":492},"como-o-reeve-confere-a-resposta-de-fora","Como o Reeve confere a resposta de fora",[10,495,496],{},[41,497,498],{},"As linhas que um questionário deixa para você tratam de quem recebe uma\nresposta. O Reeve pergunta ao seu app publicado do jeito que um estranho\nperguntaria e diz quais tabelas responderam.",[282,500,501,511,517],{},[285,502,503,506,507,236],{},[41,504,505],{},"O scan gratuito"," pergunta a cada tabela que o seu app cita quantas linhas\num visitante sem login receberia, lê o número e para sem baixar nenhuma linha.\nUns 20 segundos, sem conta: ",[31,508,510],{"href":509},"\u002Fsecurity-scanner","escaneie o seu app",[285,512,513,516],{},[41,514,515],{},"O Reeve Monitor"," refaz as nove verificações a cada hora em até três apps e\nmanda um e-mail no dia em que a sua nota piora, então uma tabela que o seu\nbuilder adicionar depois que o questionário voltou é verificada em até uma\nhora.",[285,518,519,522,523,525,526,530,531,236],{},[41,520,521],{},"O Care"," faz as mesmas verificações e guarda uma cópia do seu banco de dados\n",[41,524,359],{}," fora da sua conta no Supabase, feita numa programação e relida\nantes de contar, o que responde à linha sobre backup. Cada cópia é\ncriptografada com AES-256-GCM com uma chave que pertence só à sua conta, e a\n",[31,527,529],{"href":528},"\u002Flegal","nossa página jurídica"," explica como essas chaves são guardadas.\n",[31,532,534],{"href":533},"\u002Fsupabase-backups","Como uma cópia é feita e restaurada",[10,536,537,538,236],{},"O que cada plano cobre e quanto custa está na ",[31,539,541],{"href":540},"\u002Fpricing","página de preços",[23,543,545],{"id":544},"o-que-fazer-agora","O que fazer agora",[547,548,549],"key-takeaways",{},[282,550,551,554,557,560,563],{},[285,552,553],{},"Responda às linhas de criptografia com a página de segurança do Supabase: AES-256 em repouso e TLS em trânsito, em todos os planos, sem nada para ativar.",[285,555,556],{},"Se um cliente precisar do relatório SOC 2 ou do certificado ISO 27001 em si, isso significa o plano Team. Baixe os dois em Legal Documents, no painel da sua organização.",[285,558,559],{},"Se o seu app guarda dados de saúde, assine o BAA e cumpra a lista de HIPAA do Supabase antes de colocar qualquer coisa lá.",[285,561,562],{},"Responda às linhas de acesso a partir do seu próprio projeto. Abra o Security Advisor e depois leia a política de cada tabela que guarda pessoas.",[285,564,565],{},"Confira o resultado de fora, como visitante sem login, e anote a data ao lado da sua resposta.",[10,567,568,569,571],{},"A metade do questionário que trata de criptografia já está respondida. Antes de\ndevolver, ",[31,570,510],{"href":509}," e veja quais das suas tabelas\nrespondem hoje a um estranho.",{"title":573,"searchDepth":574,"depth":574,"links":575},"",3,[576,578,579,580,581,582,583,584,585,586,587,588],{"id":25,"depth":577,"text":26},2,{"id":147,"depth":577,"text":148},{"id":169,"depth":577,"text":170},{"id":196,"depth":577,"text":197},{"id":239,"depth":577,"text":240},{"id":249,"depth":577,"text":250},{"id":265,"depth":577,"text":266},{"id":305,"depth":577,"text":306},{"id":330,"depth":577,"text":331},{"id":454,"depth":577,"text":455},{"id":492,"depth":577,"text":493},{"id":544,"depth":577,"text":545},"Noções de segurança","\u002Fblog\u002Fdoes-supabase-encrypt-my-data\u002Fcover-1200x630.png","Uma porta redonda de cofre, fechada e trancada, em turquesa. Ao lado, um guichê está aberto e uma folha de papel desliza para fora.","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.",false,"md",[596,599,601,603,605,608],{"q":597,"a":598},"O Supabase criptografa meus dados em repouso?","Sim. O Supabase criptografa todos os dados dos clientes em repouso com AES-256 e em trânsito com TLS, em todos os planos, sem nada que você precise ativar. O que ele não acrescenta por padrão é uma segunda camada em colunas específicas dentro do banco, e o Supabase agora desaconselha o recurso de criptografia de colunas que documentava antes. Para segredos como a chave de API de um serviço externo, ele oferece o Vault.",{"q":197,"a":600},"Sim. O Supabase tem um relatório SOC 2 Type 2 de um auditor independente, renovado todo ano, sobre um período de auditoria que vai de 1º de março a 28 de fevereiro. Ele cobre a plataforma Supabase. O Supabase afirma que essa conformidade não se estende para fora do seu produto, e as configurações dentro do seu próprio projeto, como quem pode ler cada tabela, continuam sendo responsabilidade sua.",{"q":240,"a":602},"Baixe em Legal Documents, no painel da sua organização. Ele está disponível para organizações no plano Team, a partir de $599 por mês, e no Enterprise. O certificado ISO 27001 e um questionário de segurança padrão ficam no mesmo lugar. No Free ou no Pro, essa página oferece um upgrade no lugar.",{"q":266,"a":604},"Pode estar, para o seu projeto, e não é automático. Você precisa de um Business Associate Agreement assinado e do add-on pago de HIPAA, ambos a partir do plano Team, e o Supabase diz que o SOC 2 não substitui nenhum dos dois. Depois você marca o projeto como projeto HIPAA e ativa o que o Supabase lista para ele, incluindo login em duas etapas, recuperação a um ponto no tempo, obrigatoriedade de SSL e restrições de rede.",{"q":606,"a":607},"A criptografia me protege de uma tabela mal configurada?","Não. A criptografia protege os dados de quem chega ao disco ou ao tráfego sem passar pelo banco de dados. Uma requisição que o banco decide responder é descriptografada para quem a enviou, e quais requisições recebem resposta é definido pela Row Level Security de cada tabela. Em agosto de 2026 encontramos pelo menos uma tabela aberta a um estranho em 2.096 dos 3.680 apps Supabase que conseguimos verificar.",{"q":609,"a":610},"O que eu digo a um cliente que pergunta se os dados dele estão criptografados?","Sim, com os detalhes: AES-256 em repouso e TLS em trânsito, aplicados pelo Supabase a todo projeto, com um relatório SOC 2 Type 2 e uma certificação ISO 27001 por trás. Depois responda à pergunta que está por baixo, que é quem pode ler esses dados. Diga quais tabelas guardam dados pessoais, a política de Row Level Security de cada uma e a data em que você verificou pela última vez, de fora, que um visitante sem login não recebe nada.","\u002Fblog\u002Fdoes-supabase-encrypt-my-data\u002Fcard-800x500.png",[613,614,615,616,617,618,619,620,621,622],"supabase criptografa os dados","criptografia supabase","supabase criptografia em repouso","relatório soc 2 supabase","supabase tem soc 2","supabase iso 27001","supabase hipaa","supabase gdpr","conformidade supabase","certificações de segurança supabase",{},true,"\u002Fblog\u002Fdoes-supabase-encrypt-my-data","2026-09-30",{"title":5,"description":592},"blog\u002Fdoes-supabase-encrypt-my-data",[630,631,632],"O Supabase criptografa os dados? Sim. Todo projeto é criptografado em repouso com AES-256 e em trânsito com TLS, em todos os planos, sem nada para ativar.","O Supabase também tem um relatório SOC 2 Type 2 e um certificado ISO 27001. Você pode baixar os dois a partir do plano Team, e HIPAA exige ainda um acordo assinado.","Nada disso decide a quem o banco de dados responde. Em 2.096 dos 3.680 apps Supabase que conseguimos verificar, uma tabela entregava suas linhas a um estranho sem login.","6hZ05TKjPTM4AtDTNbuOHd_L2jM3NhzEm0P7d2uMNfM",[635,641,647,653,659,665,671,677,683,689,695,701,702,707,714,720,726,731,737,743,749,755,761,767,773,779,785,791,797,803,809,815,821,827,833,839,845,851,857,863,869,875,881,887,893,898,904,910,916,922,928,934,940,946,951,956,962,968,973,978,984],{"path":636,"title":637,"description":638,"published":639,"category":589,"image":640,"draft":593},"\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":642,"title":643,"description":644,"published":645,"category":589,"image":646,"draft":593},"\u002Fblog\u002Fbase44-security-scan","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":648,"title":649,"description":650,"published":651,"category":589,"image":652,"draft":593},"\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":654,"title":655,"description":656,"published":657,"category":589,"image":658,"draft":593},"\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":660,"title":661,"description":662,"published":663,"category":589,"image":664,"draft":593},"\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":666,"title":667,"description":668,"published":669,"category":589,"image":670,"draft":593},"\u002Fblog\u002Fis-base44-safe","O Base44 é seguro? O que vimos em 5.442 apps Base44","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.","2026-10-06","\u002Fblog\u002Fis-base44-safe\u002Fcard-800x500.png",{"path":672,"title":673,"description":674,"published":675,"category":589,"image":676,"draft":593},"\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":678,"title":679,"description":680,"published":681,"category":589,"image":682,"draft":593},"\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":684,"title":685,"description":686,"published":687,"category":589,"image":688,"draft":593},"\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":690,"title":691,"description":692,"published":693,"category":589,"image":694,"draft":593},"\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":696,"title":697,"description":698,"published":699,"category":589,"image":700,"draft":593},"\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":625,"title":5,"description":592,"published":626,"category":589,"image":611,"draft":593},{"path":417,"title":703,"description":704,"published":705,"category":589,"image":706,"draft":593},"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":708,"title":709,"description":710,"published":711,"category":712,"image":713,"draft":593},"\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":715,"title":716,"description":717,"published":718,"category":712,"image":719,"draft":593},"\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":721,"title":722,"description":723,"published":724,"category":712,"image":725,"draft":593},"\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":727,"title":728,"description":729,"published":724,"category":589,"image":730,"draft":593},"\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":732,"title":733,"description":734,"published":735,"category":589,"image":736,"draft":593},"\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":738,"title":739,"description":740,"published":741,"category":589,"image":742,"draft":593},"\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":744,"title":745,"description":746,"published":747,"category":712,"image":748,"draft":593},"\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":750,"title":751,"description":752,"published":753,"category":589,"image":754,"draft":593},"\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":756,"title":757,"description":758,"published":759,"category":589,"image":760,"draft":593},"\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":762,"title":763,"description":764,"published":765,"category":589,"image":766,"draft":593},"\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":768,"title":769,"description":770,"published":771,"category":589,"image":772,"draft":593},"\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":774,"title":775,"description":776,"published":777,"category":589,"image":778,"draft":593},"\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":780,"title":781,"description":782,"published":783,"category":589,"image":784,"draft":593},"\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":786,"title":787,"description":788,"published":789,"category":589,"image":790,"draft":593},"\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":792,"title":793,"description":794,"published":795,"category":589,"image":796,"draft":593},"\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":798,"title":799,"description":800,"published":801,"category":712,"image":802,"draft":593},"\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":804,"title":805,"description":806,"published":807,"category":712,"image":808,"draft":593},"\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":810,"title":811,"description":812,"published":813,"category":712,"image":814,"draft":593},"\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":816,"title":817,"description":818,"published":819,"category":589,"image":820,"draft":593},"\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":822,"title":823,"description":824,"published":825,"category":589,"image":826,"draft":593},"\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":828,"title":829,"description":830,"published":831,"category":589,"image":832,"draft":593},"\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":834,"title":835,"description":836,"published":837,"category":589,"image":838,"draft":593},"\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":840,"title":841,"description":842,"published":843,"category":589,"image":844,"draft":593},"\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":846,"title":847,"description":848,"published":849,"category":589,"image":850,"draft":593},"\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":852,"title":853,"description":854,"published":855,"category":589,"image":856,"draft":593},"\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":858,"title":859,"description":860,"published":861,"category":589,"image":862,"draft":593},"\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":864,"title":865,"description":866,"published":867,"category":589,"image":868,"draft":593},"\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":870,"title":871,"description":872,"published":873,"category":589,"image":874,"draft":593},"\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":876,"title":877,"description":878,"published":879,"category":712,"image":880,"draft":593},"\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":882,"title":883,"description":884,"published":885,"category":589,"image":886,"draft":593},"\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":888,"title":889,"description":890,"published":891,"category":712,"image":892,"draft":593},"\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":234,"title":894,"description":895,"published":896,"category":589,"image":897,"draft":593},"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":899,"title":900,"description":901,"published":902,"category":589,"image":903,"draft":593},"\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":905,"title":906,"description":907,"published":908,"category":589,"image":909,"draft":593},"\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":911,"title":912,"description":913,"published":914,"category":589,"image":915,"draft":593},"\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":917,"title":918,"description":919,"published":920,"category":712,"image":921,"draft":593},"\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":923,"title":924,"description":925,"published":926,"category":712,"image":927,"draft":593},"\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":929,"title":930,"description":931,"published":932,"category":589,"image":933,"draft":593},"\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":935,"title":936,"description":937,"published":938,"category":589,"image":939,"draft":593},"\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":941,"title":942,"description":943,"published":944,"category":712,"image":945,"draft":593},"\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":191,"title":947,"description":948,"published":949,"category":589,"image":950,"draft":593},"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":952,"title":953,"description":954,"published":949,"category":589,"image":955,"draft":593},"\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":957,"title":958,"description":959,"published":960,"category":589,"image":961,"draft":593},"\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":963,"title":964,"description":965,"published":966,"category":712,"image":967,"draft":593},"\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":475,"title":969,"description":970,"published":971,"category":589,"image":972,"draft":593},"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":974,"title":975,"description":976,"published":971,"category":712,"image":977,"draft":593},"\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":979,"title":980,"description":981,"published":982,"category":712,"image":983,"draft":593},"\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":985,"title":986,"description":987,"published":982,"category":589,"image":988,"draft":593},"\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",1791705963260]