Seu app do Supabase é seguro?

O Supabase é o banco de dados e o backend por trás de uma enorme fatia dos apps feitos com vibe coding. É poderoso e seguro quando está bem configurado — mas algumas poucas configurações decidem se seus dados são privados ou abertos ao mundo, e elas são fáceis de passar batido.

O Reeve verifica as que importam por fora, de graça, e explica o que encontra em linguagem simples. Sem instalação, sem acesso ao seu projeto — só olhamos o que já está acessível, e nunca lemos seus dados reais.

Verifique seu app do Supabase grátis

Cole o link do seu app. Cerca de 20 segundos. Veja sua nota sem cadastro.

O que pode dar errado de verdade com o Supabase

Nada disso significa que você fez algo errado — são as brechas habituais quando se está indo rápido. Aqui está o que vale a conferida:

  • Row Level Security (RLS) desligada

    O RLS é a regra do Supabase sobre quem pode ler ou alterar cada linha de uma tabela. Com a chave pública “anon” — que deve estar no seu app — qualquer um pode consultar seu banco de dados diretamente. O RLS é o que o impede de ver linhas que não são dele. Se estiver desligada, uma tabela pode ser totalmente legível, ou até editável, por qualquer um. É a configuração mais importante do Supabase, e o Reeve a verifica contando linhas, nunca lendo-as.

  • Uma chave service_role vazada

    O Supabase te dá duas chaves. A chave “anon” é pública por design e segura no navegador. A chave “service_role” ignora todas as suas regras de segurança e deve viver apenas em um servidor. Se ela algum dia acabar no código do front-end do seu app, alguém pode fazer qualquer coisa com seus dados. O Reeve decodifica as chaves que encontra e diz exatamente qual está exposta — a “anon” segura recebe um tique verde, a “service_role” é um alerta vermelho.

  • Buckets de armazenamento públicos

    Os arquivos que as pessoas enviam vivem em “buckets” do Supabase Storage. Um bucket definido como público significa que qualquer um pode listar e baixar o que há dentro — então envios privados podem se tornar visíveis para todos. O Reeve verifica se os seus buckets são listáveis; ele nunca baixa os arquivos de ninguém.

  • Sua API aberta a qualquer site (CORS)

    O Supabase dá ao seu banco de dados um endereço web (via PostgREST). Combinado com uma configuração de compartilhamento permissiva demais, outro site poderia chamar seus dados a partir do navegador de um visitante. O Reeve verifica se os seus endpoints respondem a estranhos e a outros sites — sem nunca usá-los para mudar nada.

  • Tabelas e endpoints expostos sem regras

    Cada tabela que você cria é acessível pela API do Supabase — isso é por design, e o RLS deve protegê-la. Mas uma tabela nova adicionada com pressa, antes de suas regras serem definidas, pode ficar brevemente (ou de forma duradoura) aberta. O Reeve verifica o que está de fato acessível por fora.

  • Chaves ou configuração deixadas no app implantado

    Além das próprias chaves do Supabase, os apps muitas vezes carregam outras configurações e segredos no código front-end ou em um .env exposto. O Reeve lê o código carregado do seu app e verifica se há arquivos de configuração acessíveis, depois diz quais valores são seguros de tornar públicos e quais não são.

O que o Reeve é — e o que não é

O Reeve é uma verificação gratuita, somente leitura e por fora — como um inspetor que testa as portas sem entrar. É rápida e pega os erros comuns de grande impacto. Não é uma auditoria de segurança completa, e uma nota limpa não é garantia — significa que as portas óbvias estão fechadas. Tudo o que o Reeve faz é passivo: ele conta linhas em vez de lê-las, e nunca baixa seus arquivos.

O Supabase te dá ferramentas de segurança reais — um Security Advisor e um linter de banco de dados que sinalizam problemas de RLS e de exposição bem no painel — e vale muito a pena usá-los. O que o Reeve acrescenta: a maioria de quem constrói no Supabase vive no seu criador de apps, não no editor SQL, e o advisor fala em linguagem de desenvolvedor. O Reeve verifica o seu app inteiro por fora — do jeito que um invasor chegaria aos seus dados — e explica o que encontra em palavras simples. E se você preferir não monitorar você mesmo, nós podemos.

Quer que seja resolvido, não só verificado?

O Reeve Care continua monitorando seu app, faz backup dos seus dados e ajuda você a corrigir as coisas quando quebram — para que você siga criando em vez de se preocupar.

Conheça o Reeve Care

Perguntas, respondidas com honestidade

O que é o RLS do Supabase e eu realmente preciso dele?

O RLS (Row Level Security) decide quem pode ver ou alterar cada linha das suas tabelas. Como o seu app envia uma chave pública “anon” capaz de consultar o banco de dados diretamente, o RLS é o que impede que os dados de um usuário fiquem visíveis para todos. Sim — para qualquer tabela com dados reais, você precisa dele ligado. O Reeve verifica se está, sem ler seus dados.

A chave anon do Supabase é segura de expor?

Sim — a chave “anon” foi feita para viver no seu front-end, e sozinha ela só faz o que suas regras de RLS permitem. A chave que nunca deve ser exposta é a “service_role”, que ignora todas as regras. O Reeve decodifica as chaves do seu app e diz qual é qual.

O que acontece se a minha chave service_role vazar?

A chave service_role ignora todas as regras de segurança, então quem a tiver pode ler, alterar ou apagar todos os seus dados. Se ela está no seu código front-end, trate-a como comprometida: rotacione-a no painel do Supabase e mova-a para um servidor. O Reeve sinaliza uma chave service_role exposta como um problema crítico.

O Reeve pode verificar meu Supabase sem a senha do meu banco de dados?

Sim. O Reeve só usa o que o seu app já expõe publicamente — a mesma chave anon e os mesmos endpoints que o navegador de qualquer visitante usa. Ele nunca precisa da senha do seu banco de dados, nunca faz login como administrador e nunca lê nem baixa suas linhas ou arquivos.

Criou seu app em uma ferramenta específica? Aqui está o mesmo resumo honesto para:

← Ver todos os guias de segurança dos criadores

Verificação externa automatizada, não uma auditoria completa. A ausência de achados não é garantia de segurança.