[{"data":1,"prerenderedAt":906},["ShallowReactive",2],{"blog-pt-domain-and-certificate-expiry":3,"blog-index-pt":553},{"id":4,"title":5,"body":6,"category":511,"cover":512,"coverAlt":513,"description":514,"draft":515,"extension":516,"faq":517,"image":530,"keywords":531,"meta":540,"navigation":541,"ogTitle":542,"path":543,"published":544,"seo":545,"stem":546,"tldr":547,"updated":544,"__hash__":552},"blog_pt\u002Fblog\u002Fdomain-and-certificate-expiry.md","Domínio expirado, site fora do ar: o que acontece agora",{"type":7,"value":8,"toc":498},"minimark",[9,13,16,28,33,36,44,58,64,70,73,79,93,97,100,103,106,109,113,116,122,128,133,136,202,205,209,212,221,224,227,232,241,245,248,263,266,327,330,334,337,343,349,360,364,367,375,429,436,439,442,454,461,465,490],[10,11,12],"p",{},"Na sexta o seu aplicativo funcionava. Na segunda tem um alerta de navegador\nocupando a tela inteira, ou não tem mais nada, e nada mudou no seu código.\nAlguém te manda um print e você digita as palavras que estão nele num buscador:\ndomínio expirado, site fora do ar.",[10,14,15],{},"Aqui está a parte que a maioria dos conselhos sobre isso erra. Essa manhã pode\nser produzida por duas falhas diferentes, elas correm em dois relógios\ndiferentes, e a que parece mais barata é a grave. Um certificado vencido é\nbarulhento, constrangedor e trocável hoje. Um domínio vencido é silencioso no\ncomeço, e se você deixar tempo suficiente o seu aplicativo não está fora do ar.\nEle é de outra pessoa.",[10,17,18,19,23,24,27],{},"Entre o seu aplicativo e as pessoas que o usam existem duas coisas. O ",[20,21,22],"strong",{},"domínio","\né o aluguel da loja: o nome em cima da porta e o direito de continuar usando. O\n",[20,25,26],{},"certificado"," é o alvará na vitrine dizendo que esta loja é mesmo a da placa.\nVocê aluga os dois. Os dois renovam numa data que você definiu uma vez e não\nolhou mais.",[29,30,32],"h2",{"id":31},"o-que-acontece-quando-meu-domínio-expira","O que acontece quando meu domínio expira?",[10,34,35],{},"Seu aplicativo sai do ar, e aí começa a correr um relógio em três etapas.",[10,37,38,39,43],{},"Para ",[40,41,42],"code",{},".com"," e os outros domínios genéricos o calendário vem da ICANN e não do seu\nregistrador, então ele é basicamente o mesmo onde quer que você tenha comprado o\nnome.",[10,45,46,49,50,57],{},[20,47,48],{},"Ainda seu, já apagado."," Seu registrador mantém o nome renovável pelo preço\nnormal por uma janela que ele escolhe, normalmente algumas semanas. A\n",[51,52,56],"a",{"href":53,"rel":54},"https:\u002F\u002Fwww.icann.org\u002Fresources\u002Fpages\u002Ferrp-2013-02-28-en",[55],"nofollow","Expired Registration Recovery Policy","\nda ICANN exige que ele derrube o seu DNS durante essa janela: por pelo menos os\núltimos oito dias em que o nome ainda pode ser renovado, ele tem que parar de\napontar para qualquer lugar. Ou seja, o seu aplicativo sai do ar bem antes de o\nnome ir para algum lugar, e é geralmente assim que o dono descobre.",[10,59,60,63],{},[20,61,62],{},"Apagado, e ainda recuperável."," Quando o registrador enfim apaga o registro,\ncomeça um Redemption Grace Period de 30 dias. A ICANN exige isso de quase todo\nregistro genérico. Só você pode trazer o nome de volta nesse período, só pelo\nregistrador que apagou, e você paga uma taxa de restauração além da renovação. A\nICANN não define essa taxa, e ela é bem mais cara que uma renovação.",[10,65,66,69],{},[20,67,68],{},"Pending delete."," Cerca de cinco dias em que nem você nem o seu registrador\nmudam coisa alguma. Depois o nome é liberado.",[10,71,72],{},"A mesma política diz que o seu registrador tem que te escrever: duas vezes antes\nde o registro vencer, mais ou menos um mês e uma semana antes, e de novo dentro\nde cinco dias depois. Então se algum domínio seu já venceu sem aviso, o que\nprecisa ser conferido não é o calendário. É qual endereço está cadastrado na sua\nconta do registrador.",[74,75],"diagram",{"alt":76,"caption":77,"src":78},"Uma faixa horizontal em quatro partes, com uma figura na ponta esquerda. A primeira parte é sólida; uma linha marca a data de vencimento e a faixa passa a ser hachurada. Uma segunda linha marca a exclusão, depois da qual um trecho é âmbar com o número 30 e o seguinte é vermelho com o número 5. Aí a faixa termina, seguida de um espaço vazio pontilhado e de mais três figuras.","As três etapas depois que um domínio vence, para .com e os outros domínios genéricos. Nas duas primeiras o nome é recuperável e depois da terceira ele é de qualquer um.","\u002Fblog\u002Fdomain-and-certificate-expiry\u002Fthe-clock-after-expiry-1600x540.png",[10,80,81,82,85,86,85,89,92],{},"Domínios de país têm os próprios calendários. ",[40,83,84],{},".io",", ",[40,87,88],{},".co.uk",[40,90,91],{},".de"," e os demais\nficam fora dessa política, e alguns são bem menos tolerantes. Se o seu aplicativo\nestá em um deles, leia a página de ciclo de vida do seu registro em vez desta\nseção.",[29,94,96],{"id":95},"alguém-pode-pegar-meu-domínio-depois-que-ele-expira","Alguém pode pegar meu domínio depois que ele expira?",[10,98,99],{},"Pode, assim que ele é liberado, e é isso que torna este caso diferente de tudo o\nmais num relatório de segurança.",[10,101,102],{},"Qualquer outro achado é um erro dentro de algo que é seu. Você pode ir lá e\ncorrigir. Um domínio liberado sai completamente da sua posse: o nome fica\nregistrado no nome de outra pessoa, e tudo o que apontava para o seu aplicativo\nagora aponta para ela. Favoritos. O link do seu e-mail de boas-vindas. O endereço\nno cartão que você distribuiu num evento. O link de redefinir senha que você\nmandou semana passada.",[10,104,105],{},"Os nomes também são pegos rápido. Existem empresas cujo produto inteiro é pedir\num domínio no segundo em que ele fica livre, e por isso um nome com qualquer\ntráfego raramente fica muito tempo sem registro.",[10,107,108],{},"Você ainda pode tentar comprar de volta. Aí você está negociando com quem chegou\nprimeiro, pelo preço que essa pessoa disser. Um certificado que venceu hoje de\nmanhã pode ser trocado hoje de manhã; um domínio liberado mês passado talvez nem\nesteja à venda.",[29,110,112],{"id":111},"por-que-meu-site-diz-não-seguro-se-ontem-estava-tudo-bem","Por que meu site diz «não seguro» se ontem estava tudo bem?",[10,114,115],{},"Isso pode vir de duas coisas diferentes, e qual delas você tem está escrito na\ntela.",[10,117,118,121],{},[20,119,120],{},"Um aviso na barra de endereços"," é o navegador dizendo que a página chegou por\nHTTP simples, sem certificado nenhum envolvido. Sua página continua carregando\nembaixo. Nada venceu. Alguma coisa está servindo o seu site sem HTTPS, e isso é\num problema à parte, não este.",[10,123,124,127],{},[20,125,126],{},"Um certificado vencido ou não confiável não é um aviso. É uma parede."," Seu\naplicativo é substituído por uma página inteira: no Chrome, a que diz que a\nconexão não é particular; no Firefox, o alerta sobre um possível risco de\nsegurança. Chegar ao seu site significa achar um botão de Avançado e clicar\natravés de um alerta que diz que o site não é seguro. A maioria dos visitantes\nnão vai.",[74,129],{"alt":130,"caption":131,"src":132},"Duas janelas de navegador. Na primeira a página aparece normalmente e há um pequeno círculo cortado na barra de endereços. Na segunda não há página nenhuma: um painel opaco preenche a janela, com um sinal de alerta e um único botão.","À esquerda a página ainda carrega e o navegador está comentando sobre ela. À direita o certificado falhou e não há mais página para comentar.","\u002Fblog\u002Fdomain-and-certificate-expiry\u002Fa-label-and-a-wall-1600x820.png",[10,134,135],{},"Leia o código embaixo do alerta antes de mudar qualquer coisa, porque ele diz de\nqual conserto você precisa:",[137,138,139,155],"table",{},[140,141,142],"thead",{},[143,144,145,149,152],"tr",{},[146,147,148],"th",{},"O que o navegador imprime",[146,150,151],{},"O que significa",[146,153,154],{},"O que resolve",[156,157,158,177,191],"tbody",{},[143,159,160,171,174],{},[161,162,163,166,167,170],"td",{},[40,164,165],{},"NET::ERR_CERT_DATE_INVALID"," no Chrome, ",[40,168,169],{},"SEC_ERROR_EXPIRED_CERTIFICATE"," no Firefox",[161,172,173],{},"O certificado passou da data de fim",[161,175,176],{},"Um certificado novo",[143,178,179,185,188],{},[161,180,181,184],{},[40,182,183],{},"NET::ERR_CERT_AUTHORITY_INVALID"," no Chrome",[161,186,187],{},"Nada em que o navegador confie assinou, ou um elo da cadeia nunca foi instalado",[161,189,190],{},"Um certificado de uma autoridade confiável, ou o elo que falta. Renovar não muda nada",[143,192,193,196,199],{},[161,194,195],{},"A mensagem dizendo que o relógio do aparelho está adiantado ou atrasado",[161,197,198],{},"Quem está com a data errada é o aparelho do visitante",[161,200,201],{},"Nada do seu lado",[10,203,204],{},"Essa última linha vale a leitura antes de você ir procurar na sua hospedagem. Uma\npessoa sozinha relatando um alerta de certificado pode ser o notebook dessa\npessoa.",[29,206,208],{"id":207},"por-que-um-certificado-https-para-de-renovar-sem-nada-quebrar","Por que um certificado HTTPS para de renovar sem nada quebrar",[10,210,211],{},"Porque a renovação deveria acontecer um mês antes de o certificado importar, e\numa renovação que falha não muda nada que você consiga ver.",[10,213,214,215,220],{},"A maioria dos aplicativos feitos assim é servida por uma hospedagem que pega\ncertificados do Let’s Encrypt e renova por você. O Let’s Encrypt\n",[51,216,219],{"href":217,"rel":218},"https:\u002F\u002Fletsencrypt.org\u002Fdocs\u002Ffaq\u002F",[55],"emite certificados de 90 dias e recomenda renovar a cada 60",",\nentão o processo que mantém o seu site vivo deveria dar certo com 30 dias ainda\nsobrando.",[10,222,223],{},"Para conseguir um novo, a sua hospedagem precisa provar para a autoridade que\nainda controla o seu nome: ou servindo um arquivo que a autoridade pede no seu\ndomínio, ou escrevendo um registro no seu DNS. Qualquer coisa que quebre essa\nprova quebra a renovação. Mudar o seu DNS para outro provedor. Colocar um proxy\nna frente do aplicativo. Apontar o nome para outro lugar para testar algo e\napontar de volta. Adicionar um registro CAA, que é uma entrada de DNS dizendo\nquais autoridades podem emitir para o seu domínio e que proíbe silenciosamente\ntoda autoridade que ela não cita.",[10,225,226],{},"Nada disso derruba o seu site. O certificado que você já tem continua\nfuncionando, então o aplicativo segue no ar e o cadeado segue lá enquanto a\nrenovação falha de novo todo dia por um mês sem ninguém olhando.",[74,228],{"alt":229,"caption":230,"src":231},"Duas trilhas sobrepostas sobre um mesmo eixo marcado com 0, 60 e 90. A trilha de cima é a renovação: uma caixa contornada com um sinal de confirmação dentro até o dia 60, e depois seis xis espaçados até o dia 90. A trilha de baixo é o que os visitantes veem: a cor de destaque sem interrupção por todo o eixo, virando um bloco âmbar no dia 90.","A renovação começa a falhar no dia 60 e o site parece perfeito até o dia 90. Tudo o que teria te avisado está na trilha de cima.","\u002Fblog\u002Fdomain-and-certificate-expiry\u002Fnothing-visible-for-30-days-1600x620.png",[10,233,234,235,240],{},"A carta que antes chegava também parou.\n",[51,236,239],{"href":237,"rel":238},"https:\u002F\u002Fletsencrypt.org\u002F2025\u002F06\u002F26\u002Fexpiration-notification-service-has-ended",[55],"O Let’s Encrypt encerrou os e-mails de aviso de vencimento em 4 de junho de 2025",",\ntendo anunciado isso em janeiro do mesmo ano: a renovação já é automatizada para\na maioria dos assinantes, e guardar milhões de endereços de e-mail atrelados a\ndados de emissão era um custo de privacidade que eles preferiram não carregar.\nAs duas razões são boas. Ainda assim tirou a única mensagem que chegava a uma\npessoa quando o automático parava.",[29,242,244],{"id":243},"o-lovable-ou-a-vercel-renovam-meu-certificado-por-mim","O Lovable ou a Vercel renovam meu certificado por mim?",[10,246,247],{},"Enquanto o seu aplicativo estiver no subdomínio do próprio builder, as duas datas\nsão deles, e nenhuma delas é algo que você possa errar.",[10,249,250,251,254,255,258,259,262],{},"Em ",[40,252,253],{},"seuapp.lovable.app",", ou num endereço ",[40,256,257],{},"vercel.app"," ou ",[40,260,261],{},"netlify.app",", a\nplataforma é dona do nome, renova o registro e emite e renova o certificado.\nNossa própria verificação de domínio nem chega a consultar esses casos. Ela\ninforma que o aplicativo está num domínio gerenciado por uma plataforma e que\naqui não há nada para você acompanhar.",[10,264,265],{},"Conectar um domínio próprio move uma das duas coisas para você com certeza, e a\noutra às vezes:",[137,267,268,281],{},[140,269,270],{},[143,271,272,275,278],{},[146,273,274],{},"O quê",[146,276,277],{},"Num subdomínio do builder",[146,279,280],{},"No seu próprio domínio",[156,282,283,294,305,316],{},[143,284,285,288,291],{},[161,286,287],{},"De quem é o nome",[161,289,290],{},"Da plataforma",[161,292,293],{},"Seu, pelo seu registrador",[143,295,296,299,302],{},[161,297,298],{},"Quem renova o registro",[161,300,301],{},"A plataforma, automaticamente",[161,303,304],{},"Você, num cartão",[143,306,307,310,313],{},[161,308,309],{},"Quem emite e renova o certificado",[161,311,312],{},"A plataforma",[161,314,315],{},"Normalmente ainda a sua hospedagem, automaticamente, para o seu domínio",[143,317,318,321,324],{},[161,319,320],{},"Quem fica sabendo quando quebra",[161,322,323],{},"Ninguém precisa",[161,325,326],{},"Você, se alguma coisa estiver olhando",[10,328,329],{},"A linha da renovação é a que surpreende as pessoas. Nada no builder anuncia isso.\nVocê adiciona um domínio, o aplicativo carrega nele, e agora você tem um\ncompromisso no calendário que nunca marcou.",[29,331,333],{"id":332},"como-conferir-os-dois-agora","Como conferir os dois agora?",[10,335,336],{},"De fora, sem entrar em lugar nenhum.",[10,338,339,342],{},[20,340,341],{},"O certificado."," Abra o seu aplicativo, clique no cadeado da barra de\nendereços, abra os detalhes do certificado e leia a data de fim da validade. Num\ncertificado padrão de 90 dias, mais de 30 dias pela frente significa que a\nrenovação está funcionando. Menos de 30 significa que a renovação que já deveria\nter acontecido não aconteceu.",[10,344,345,348],{},[20,346,347],{},"O domínio."," Entre no seu registrador e leia três coisas. A data de vencimento.\nSe o cartão por trás da renovação automática ainda é válido, porque renovação\nautomática com cartão morto é o jeito mais comum de isso acontecer com quem tinha\ncerteza de que não podia acontecer. E o endereço de e-mail da conta, porque é\npara lá que vai cada aviso que você tem direito de receber.",[10,350,351,354,355,359],{},[20,352,353],{},"Os dois de uma vez."," Nosso scan gratuito lê os dois de fora, junto com outras\nsete verificações, em cerca de 20 segundos e sem conta:\n",[51,356,358],{"href":357},"\u002Fsecurity-scanner","escaneie seu aplicativo",". Ele imprime a data de fim do\ncertificado e, para um domínio que você registrou, a do registro. Num subdomínio\ndo builder ele diz isso, em vez de inventar uma data para você.",[29,361,363],{"id":362},"o-que-encontramos-em-30998-aplicativos","O que encontramos em 30.998 aplicativos",[10,365,366],{},"Os dois achados são raros, e cada um deles era de alguém que tinha conectado um\ndomínio próprio.",[10,368,369,370,374],{},"Entre 12 e 14 de agosto de 2026 rodamos as mesmas nove verificações externas em\n30.998 aplicativos no ar feitos com Lovable, Bolt, v0, Replit e Base44. Dos\naplicativos em que cada verificação obteve resposta, 55 de 30.980 tinham um\ndomínio vencido ou vencendo, e 32 de 30.851 tinham um certificado vencido,\nvencendo ou não confiável. Os números completos estão no\n",[51,371,373],{"href":372},"\u002Fresearch\u002Fvibe-coded-app-security-2026","nosso relatório de scan",".",[137,376,377,387],{},[140,378,379],{},[143,380,381,384],{},[146,382,383],{},"Achado",[146,385,386],{},"Aplicativos",[156,388,389,397,405,413,421],{},[143,390,391,394],{},[161,392,393],{},"Domínio vencendo em até 60 dias",[161,395,396],{},"54",[143,398,399,402],{},[161,400,401],{},"Domínio já vencido",[161,403,404],{},"1",[143,406,407,410],{},[161,408,409],{},"Certificado vencendo em até 30 dias",[161,411,412],{},"19",[143,414,415,418],{},[161,416,417],{},"Certificado já vencido",[161,419,420],{},"5",[143,422,423,426],{},[161,424,425],{},"Certificado em que nenhum navegador confia",[161,427,428],{},"8",[10,430,431,432,435],{},"São 87 aplicativos, o que parece erro de arredondamento até você perguntar quem\neram. 1.090 dos scans daquela rodada foram em aplicativos cujo dono tinha\nregistrado o domínio. ",[20,433,434],{},"Os 87 estavam nesse grupo",", e nenhum aplicativo em\nsubdomínio de builder carregava qualquer um dos dois achados. Entre os\naplicativos que podem ter esse problema, isso dá mais ou menos um em doze.",[10,437,438],{},"Quase toda aquela coluna é um aviso e não uma queda, e essa é a parte útil:\nalguém ainda tinha tempo. Cinco dos domínios estavam dentro de sete dias e um já\ntinha ido embora. Treze dos aplicativos estavam mostrando a cada visitante um\nalerta de navegador no momento em que olhamos, cinco com um certificado vencido e\noito com um em que nada confia.",[10,440,441],{},"Nos dois casos é uma data passando enquanto ninguém olha, e esse é exatamente o\ntipo de problema para o qual algo que confere de hora em hora é bom de verdade.",[10,443,444,445,449,450,453],{},"O ",[51,446,448],{"href":447},"\u002Fpricing","Reeve Monitor"," roda as nove verificações de novo a cada hora em até\ntrês aplicativos, acompanha a disponibilidade a cada 60 segundos e manda um\nrelatório mensal. Para esses dois achados ele faz uma coisa que não faz para\nnenhum outro: te escreve avisando que um certificado ou um registro está\nacabando ",[20,451,452],{},"mesmo quando a sua nota não mudou",". O Monitor custa $12 por mês de\ntabela, com sete dias grátis antes da primeira cobrança, e a página de preços às\nvezes fica abaixo do valor daqui e nunca acima.",[10,455,456,457,374],{},"O Monitor observa e nada além disso. Se você também quer uma cópia do seu banco\nde dados guardada num lugar que o seu builder não alcança,\n",[51,458,460],{"href":459},"\u002Fsupabase-backups","isso é o Care, e ele cobre Supabase",[29,462,464],{"id":463},"o-que-fazer-agora","O que fazer agora",[466,467,468],"key-takeaways",{},[469,470,471,475,478,481,484,487],"ul",{},[472,473,474],"li",{},"Leia a data de fim da validade do seu certificado pelo cadeado da barra de endereços. Mais de 30 dias pela frente significa que a renovação está funcionando.",[472,476,477],{},"Entre no seu registrador e leia a data de vencimento e o cartão por trás da renovação automática. Cartão morto é como a renovação automática falha.",[472,479,480],{},"Coloque as duas datas no calendário que você realmente lê, um mês antes de cada uma.",[472,482,483],{},"Se já tem um alerta aparecendo, leia primeiro o código embaixo dele. Um erro de data pede um certificado novo; um erro de autoridade pede um diferente, e renovar não resolve.",[472,485,486],{},"Se um domínio já venceu, renove hoje. Cada etapa depois desta custa mais que a anterior, e depois do período de recuperação já não cabe a você renovar.",[472,488,489],{},"Se você ainda está no subdomínio do seu builder, nenhum dos dois é seu por enquanto. Eles chegam junto com o seu domínio, no mesmo dia.",[10,491,492,493,497],{},"Nenhum dos dois é um erro que alguém cometeu dentro do seu aplicativo, e é por\nisso que é tão fácil deixar os dois de fora da lista. Coloque na lista. Se você\nprefere resolver tudo de uma vez, o\n",[51,494,496],{"href":495},"\u002Fchecklist","checklist de segurança em 10 minutos"," cobre as nove verificações na\nordem em que valem a pena.",{"title":499,"searchDepth":500,"depth":500,"links":501},"",3,[502,504,505,506,507,508,509,510],{"id":31,"depth":503,"text":32},2,{"id":95,"depth":503,"text":96},{"id":111,"depth":503,"text":112},{"id":207,"depth":503,"text":208},{"id":243,"depth":503,"text":244},{"id":332,"depth":503,"text":333},{"id":362,"depth":503,"text":363},{"id":463,"depth":503,"text":464},"Noções de segurança","\u002Fblog\u002Fdomain-and-certificate-expiry\u002Fcover-1200x630.png","Duas fichas altas, cada uma com um selo no pé. A da esquerda está acesa na cor de destaque; a da direita fica na sombra, com a cor apagada.","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.",false,"md",[518,520,522,525,527],{"q":32,"a":519},"Primeiro o seu aplicativo sai do ar, e o nome continua recuperável por um tempo depois disso. Para .com e os outros domínios genéricos, o seu registrador mantém o nome renovável pelo preço normal por uma janela que ele mesmo escolhe, e a ICANN exige que o seu DNS pare de funcionar por pelo menos os últimos oito dias dessa janela. Depois que o registrador apaga o registro, começa um Redemption Grace Period de 30 dias, em que só você pode restaurar o nome, e só pelo registrador que apagou, mediante uma taxa. Depois vêm cerca de cinco dias de pending delete em que ninguém pode fazer nada, e então o nome fica disponível para o próximo que pedir.",{"q":96,"a":521},"Pode, assim que ele passa pelos períodos de recuperação e de pending delete e é liberado. A partir daí o nome é registrado por ordem de chegada, e existem empresas cujo produto inteiro é pedir um nome no segundo em que ele fica livre. Tudo o que apontava para o seu aplicativo continua apontando para o nome: favoritos, o link do seu e-mail de boas-vindas, o endereço na sua ficha da loja de aplicativos. Você pode tentar comprar de volta de quem pegou, pelo preço que essa pessoa decidir.",{"q":523,"a":524},"Por que meu site diz «não seguro» hoje, se ontem estava tudo bem?","São dois problemas diferentes, e a tela diz qual deles você tem. Um aviso cinza na barra de endereços, com a sua página carregando normalmente embaixo, quer dizer que a página chegou por HTTP simples e que não havia certificado nenhum envolvido. Um certificado vencido ou não confiável não é um aviso: ele substitui o seu aplicativo por um alerta de página inteira que o visitante precisa atravessar clicando.",{"q":244,"a":526},"No subdomínio deles tudo é deles e não há nada para você acompanhar. Assim que você conecta um domínio próprio, o registro passa a ser seu dali em diante, e o certificado normalmente continua sendo emitido e renovado por quem hospeda o aplicativo. É essa divisão que torna uma renovação quebrada tão fácil de passar batido: ninguém te conta que isso estava sendo feito por você, e deixa de ser feito sem que nenhum erro chegue a ninguém.",{"q":528,"a":529},"Com quanta antecedência eu deveria ser avisado?","Um mês para cada um, porque é mais ou menos aí que os dois voltam a ser resolvíveis sem drama. Um certificado padrão é renovado uns 30 dias antes de vencer, então um certificado com menos de 30 dias restantes já está te dizendo que a renovação não funcionou. No caso do domínio, vale pegar a data antes mesmo de o registro vencer, porque cada etapa seguinte custa mais que a anterior.","\u002Fblog\u002Fdomain-and-certificate-expiry\u002Fcard-800x500.png",[532,533,534,535,536,537,538,539],"domínio expirado site fora do ar","certificado ssl expirado","meu site diz não seguro","verificar vencimento do domínio","o que acontece quando o certificado expira","alguém pode pegar meu domínio","certificado https não renova","renovar domínio antes de vencer",{},true,"Domínio expirado, site fora do ar: o que acontece","\u002Fblog\u002Fdomain-and-certificate-expiry","2026-09-22",{"title":5,"description":514},"blog\u002Fdomain-and-certificate-expiry",[548,549,550,551],"Se o seu domínio expirou e o site está fora do ar, tem um relógio correndo. Para .com e a maioria dos domínios genéricos são algumas semanas pelo preço normal, depois 30 dias para comprar de volta pagando uma taxa, e depois cerca de cinco dias em que não dá para fazer mais nada.","Um certificado que vence faz barulho e você troca hoje mesmo. Um domínio liberado passa a ser de quem registrar em seguida, junto com todo link que alguém já criou para o seu aplicativo.","Sobre o domínio o seu registrador é obrigado a avisar, e avisa. Sobre o certificado ninguém é obrigado a avisar, e o Let’s Encrypt parou de mandar os próprios e-mails de vencimento em 4 de junho de 2025.","Num subdomínio do builder nenhum dos dois é seu: a plataforma é dona do nome e do certificado e renova os dois. Eles passam a ser seus no dia em que você conecta um domínio próprio.","0EDJp8ucriITFcOgnLGLPWc3rNQgFLW-tylKog5MoXc",[554,560,566,572,578,584,590,596,602,608,614,620,626,633,639,645,650,656,662,668,669,675,681,687,693,699,705,711,717,723,729,735,741,747,753,759,765,771,777,783,789,795,801,807,813,819,825,831,837,843,849,855,861,867,872,878,884,890,895,901],{"path":555,"title":556,"description":557,"published":558,"category":511,"image":559,"draft":515},"\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":561,"title":562,"description":563,"published":564,"category":511,"image":565,"draft":515},"\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":567,"title":568,"description":569,"published":570,"category":511,"image":571,"draft":515},"\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":573,"title":574,"description":575,"published":576,"category":511,"image":577,"draft":515},"\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":579,"title":580,"description":581,"published":582,"category":511,"image":583,"draft":515},"\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":585,"title":586,"description":587,"published":588,"category":511,"image":589,"draft":515},"\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":591,"title":592,"description":593,"published":594,"category":511,"image":595,"draft":515},"\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":597,"title":598,"description":599,"published":600,"category":511,"image":601,"draft":515},"\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":603,"title":604,"description":605,"published":606,"category":511,"image":607,"draft":515},"\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":609,"title":610,"description":611,"published":612,"category":511,"image":613,"draft":515},"\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":615,"title":616,"description":617,"published":618,"category":511,"image":619,"draft":515},"\u002Fblog\u002Fdoes-supabase-encrypt-my-data","O Supabase criptografa meus dados? Sim. Veja o que isso impede","O Supabase criptografa os dados? Sim: AES-256 em repouso, TLS em trânsito, SOC 2 e ISO 27001. O que cada um cobre, e o vazamento que nenhum deles impede.","2026-09-30","\u002Fblog\u002Fdoes-supabase-encrypt-my-data\u002Fcard-800x500.png",{"path":621,"title":622,"description":623,"published":624,"category":511,"image":625,"draft":515},"\u002Fblog\u002Fsupabase-free-plan-limits","Quanto custa o Supabase? Os limites do plano gratuito","Quanto custa o Supabase: o plano gratuito tem 500 MB de banco, 5 GB de egress e nenhum backup. O que acontece em cada limite e o que o Pro de $25 muda.","2026-09-29","\u002Fblog\u002Fsupabase-free-plan-limits\u002Fcard-800x500.png",{"path":627,"title":628,"description":629,"published":630,"category":631,"image":632,"draft":515},"\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":634,"title":635,"description":636,"published":637,"category":631,"image":638,"draft":515},"\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":640,"title":641,"description":642,"published":643,"category":631,"image":644,"draft":515},"\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":646,"title":647,"description":648,"published":643,"category":511,"image":649,"draft":515},"\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":651,"title":652,"description":653,"published":654,"category":511,"image":655,"draft":515},"\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":657,"title":658,"description":659,"published":660,"category":511,"image":661,"draft":515},"\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":663,"title":664,"description":665,"published":666,"category":631,"image":667,"draft":515},"\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":543,"title":5,"description":514,"published":544,"category":511,"image":530,"draft":515},{"path":670,"title":671,"description":672,"published":673,"category":511,"image":674,"draft":515},"\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":676,"title":677,"description":678,"published":679,"category":511,"image":680,"draft":515},"\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":682,"title":683,"description":684,"published":685,"category":511,"image":686,"draft":515},"\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":688,"title":689,"description":690,"published":691,"category":511,"image":692,"draft":515},"\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":694,"title":695,"description":696,"published":697,"category":511,"image":698,"draft":515},"\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":700,"title":701,"description":702,"published":703,"category":511,"image":704,"draft":515},"\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":706,"title":707,"description":708,"published":709,"category":511,"image":710,"draft":515},"\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":712,"title":713,"description":714,"published":715,"category":631,"image":716,"draft":515},"\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":718,"title":719,"description":720,"published":721,"category":631,"image":722,"draft":515},"\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":724,"title":725,"description":726,"published":727,"category":631,"image":728,"draft":515},"\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":730,"title":731,"description":732,"published":733,"category":511,"image":734,"draft":515},"\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":736,"title":737,"description":738,"published":739,"category":511,"image":740,"draft":515},"\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":742,"title":743,"description":744,"published":745,"category":511,"image":746,"draft":515},"\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":748,"title":749,"description":750,"published":751,"category":511,"image":752,"draft":515},"\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":754,"title":755,"description":756,"published":757,"category":511,"image":758,"draft":515},"\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":760,"title":761,"description":762,"published":763,"category":511,"image":764,"draft":515},"\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":766,"title":767,"description":768,"published":769,"category":511,"image":770,"draft":515},"\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":772,"title":773,"description":774,"published":775,"category":511,"image":776,"draft":515},"\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":778,"title":779,"description":780,"published":781,"category":511,"image":782,"draft":515},"\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":784,"title":785,"description":786,"published":787,"category":511,"image":788,"draft":515},"\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":790,"title":791,"description":792,"published":793,"category":631,"image":794,"draft":515},"\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":796,"title":797,"description":798,"published":799,"category":511,"image":800,"draft":515},"\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":802,"title":803,"description":804,"published":805,"category":631,"image":806,"draft":515},"\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":808,"title":809,"description":810,"published":811,"category":511,"image":812,"draft":515},"\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":814,"title":815,"description":816,"published":817,"category":511,"image":818,"draft":515},"\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":820,"title":821,"description":822,"published":823,"category":511,"image":824,"draft":515},"\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":826,"title":827,"description":828,"published":829,"category":511,"image":830,"draft":515},"\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":832,"title":833,"description":834,"published":835,"category":631,"image":836,"draft":515},"\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":838,"title":839,"description":840,"published":841,"category":631,"image":842,"draft":515},"\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":844,"title":845,"description":846,"published":847,"category":511,"image":848,"draft":515},"\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":850,"title":851,"description":852,"published":853,"category":511,"image":854,"draft":515},"\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":856,"title":857,"description":858,"published":859,"category":631,"image":860,"draft":515},"\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":862,"title":863,"description":864,"published":865,"category":511,"image":866,"draft":515},"\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":868,"title":869,"description":870,"published":865,"category":511,"image":871,"draft":515},"\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":873,"title":874,"description":875,"published":876,"category":511,"image":877,"draft":515},"\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":879,"title":880,"description":881,"published":882,"category":631,"image":883,"draft":515},"\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":885,"title":886,"description":887,"published":888,"category":511,"image":889,"draft":515},"\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":891,"title":892,"description":893,"published":888,"category":631,"image":894,"draft":515},"\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":896,"title":897,"description":898,"published":899,"category":631,"image":900,"draft":515},"\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":902,"title":903,"description":904,"published":899,"category":511,"image":905,"draft":515},"\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",1791618971787]