← Todas as verificações
SegurançaSeveridade típica: Crítico

Detetor de base de dados aberta

Verifica se as tabelas do Supabase ou a base de dados do Firebase do teu site se podem ler sem iniciar sessão.

Verificação grátis em direto

Procuramos o teu projeto Supabase ou Firebase no código público do teu site e verificamos, com a mesma chave pública que os teus visitantes recebem, se as tabelas se podem ler sem iniciar sessão. Só contamos linhas; nunca descarregamos dados.

Verifica grátis no teu painel

Conta grátis, pronta em 30 segundos. Só contamos linhas; nunca descarregamos dados.

O que verifica

Este scanner procura no JavaScript público do teu site o endereço do teu projeto Supabase ou da tua Realtime Database do Firebase e a chave pública que o navegador usa. Com essa mesma chave, como faria qualquer visitante, verifica que tabelas respondem sem iniciar sessão. Só conta linhas: nunca descarrega nem guarda dados.

Porque importa

No Supabase, a chave pública foi pensada para ir no navegador: o que protege os dados são as políticas de Row Level Security. Se uma tabela não tem RLS, qualquer pessoa a pode ler inteira com um único pedido. É exatamente a falha da vulnerabilidade do Lovable (CVE-2025-48757) e a mais comum em apps feitas com IA.

Como se corrige

Ativa o Row Level Security em todas as tabelas e escreve políticas que só deixem cada utilizador ler as suas próprias linhas; deixa leitura pública apenas no que for mesmo público. No Firebase, troca as regras do modo de teste por regras que exijam sessão. Depois, volta a analisar para confirmar que a contagem anónima é zero.

Como funciona esta verificação

As apps feitas com Lovable, Bolt ou v0 costumam falar com o Supabase diretamente a partir do navegador, por isso o URL do teu projeto e a chave pública (anon ou sb_publishable_…) estão dentro do teu JavaScript. É normal: essa chave foi pensada para ser pública. O Scanaris encontra-as, pergunta à API do Supabase que tabelas expõe e, para cada uma, faz um pedido HEAD com Prefer: count=exact. A resposta traz o número de linhas que um visitante sem sessão vê, e nenhum dado. Se a API não publicar a lista de tabelas, testa os nomes que as ferramentas de IA mais usam (profiles, users, orders, messages…). No Firebase, verifica se a raiz da Realtime Database responde a uma leitura sem sessão.

O que significa um resultado

Uma tabela com mais de zero linhas visíveis de forma anónima pode ser lida por qualquer pessoa que abra o teu site: um pedido com a chave pública e leva a tabela inteira. É exatamente o padrão da vulnerabilidade do Lovable (CVE-2025-48757). Com Row Level Security ativo e políticas razoáveis, um visitante anónimo vê zero linhas, por isso um "0" nunca gera resultado.

Como corrigir no Supabase

Lista as tabelas sem RLS, ativa-o e escreve uma política por operação. Deixa leitura pública só onde os dados forem mesmo públicos (um blog, um catálogo de produtos).

-- Tables in the public schema without RLS
select c.relname
from pg_class c
join pg_namespace n on n.oid = c.relnamespace
where n.nspname = 'public' and c.relkind = 'r' and not c.relrowsecurity;

alter table public.profiles enable row level security;

create policy "profiles: own rows" on public.profiles
  for select to authenticated
  using ((select auth.uid()) = id);

Como corrigir no Firebase

Troca as regras do modo de teste por regras que neguem tudo por defeito e só abram o que é de cada utilizador:

{
  "rules": {
    ".read": false,
    ".write": false,
    "users": {
      "$uid": {
        ".read": "auth != null && auth.uid === $uid",
        ".write": "auth != null && auth.uid === $uid"
      }
    }
  }
}

O passo a passo de cada caso está no guia do Supabase e no guia do Firebase.

Perguntas frequentes

O Scanaris lê os meus dados?

Não. Só lê a contagem de linhas que a API devolve num cabeçalho; os pedidos não trazem o conteúdo das tabelas e nada é guardado.

Posso esconder a chave pública em vez disto?

Não, e não é preciso: o navegador precisa dela para falar com o Supabase. O que protege os teus dados é o RLS, não esconder a chave.

Verifica-o no teu site

Analisa o teu site grátis e vê se esta e outras 47 verificações passam, com um fix prompt por cada problema.

Analisar o meu site grátis

Do blog

Segurança por stack

Verificações relacionadas