Segurança, em linguagem simples
Textos curtos sobre o que realmente dá errado em apps feitos no impulso, e o que fazer a respeito.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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á?

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.

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.

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.

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.

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.
Tudo aqui é escrito por um especialista em segurança, e é dirigido a quem apertou publicar.
Vlad Tkachenko