Saltar para o conteúdo

Verifique o seu projeto Supabase com 45 regras OWASP Top 10:2025 e mais

Ligue um projeto só em leitura e receba um relatório com nota e a correção de cada problema, nesta mesma página.

Para equipas que desenvolvem com Lovable, Bolt, Cursor ou v0 sobre Supabase. Grátis, sem registo.

Verificar o meu projeto Supabase

Grátis, sem registo. Só leitura: nada no seu projeto é alterado.

  1. Ligue o SupabaseAprove o acesso só de leitura em supabase.com.
  2. Executamos 45 verificaçõesAcessos e RLS, autenticação, armazenamento e funções, infraestrutura. Apenas o catálogo e as definições, nunca as suas linhas.
  3. Relatório e um prompt para o seu agente de IAUma correção para cada problema e um prompt para colar no Cursor, Claude Code ou Lovable. Só é guardado se o partilhar.

O que a verificação consegue ver

Lemos

  • Catálogo da base de dados: tabelas, indicadores de RLS, políticas, permissões, vistas, funções, extensões, papéis e quem pode ler o Vault
  • Definições de auth: regras de palavra-passe, confirmação de email, MFA, URLs de redirecionamento
  • Storage: a lista de buckets, quais são públicos e os seus limites de tamanho e tipo de ficheiro
  • Edge Functions: a lista e a definição de JWT de cada uma
  • Definições do projeto: versão do Postgres, cópias de segurança, SSL, restrições de rede, limite de linhas da Data API

Nunca lemos

  • As linhas das suas tabelas
  • Chaves de API e segredos: o Supabase inclui algumas nas respostas de definições, e a verificação descarta-as à chegada, sem as guardar, registar nem mostrar
  • Os ficheiros guardados nos seus buckets
  • O código da sua aplicação e o seu repositório

Um relatório só é guardado quando cria uma ligação de partilha, durante 7 dias no máximo. O acesso concedido é revogado logo a seguir à verificação.

O que o acesso de leitura não consegue verificar

  • A06 Conceção insegura e A10 Tratamento incorreto de condições excecionais estão no código da sua aplicação, não nas definições do projeto.
  • As dependências do frontend (a parte npm do A03) e uma chave service_role incluída no código do frontend. Verifique o seu repositório.
  • Regras de acesso que existem só no código da aplicação ou em Edge Functions, como uma verificação de plan = 'pro' no frontend. A análise só vê colunas que a própria base de dados usa em políticas, funções e auth hooks, por isso um resultado aprovado para colunas de acesso editáveis não significa que essas colunas estejam seguras.
  • Se um utilizador com sessão iniciada consegue ler as linhas de outro utilizador. Isso exige um teste com dois utilizadores reais: como testar o RLS do Supabase

Supabase Security Advisor e esta verificação

PerguntaSecurity AdvisorEsta verificação
Onde correNo painel do Supabase, um projeto de cada vezNesta página, após um OAuth só de leitura, para o projeto que escolher
O que lêLints da base de dadosOs mesmos lints como uma só verificação, mais auth, storage, Edge Functions, cópias de segurança e definições de rede
Como os resultados são agrupadosPor lintPor OWASP Top 10:2025, com as categorias que não consegue verificar indicadas
O que recebe para corrigirUma ligação para a documentação do lintSQL ou a definição do painel para cada problema, e um prompt para o seu agente de IA
O que pode guardarA lista no seu painelUm PDF, ou uma ligação de partilha que expira ao fim de 7 dias

Cobertura do OWASP Top 10:2025

CategoriaVerificaçõesEstado
A01 Controlo de acesso quebrado18Coberta
A02 Configuração de segurança incorreta9Coberta
A03 Falhas na cadeia de fornecimento de software2Parcial Apenas a versão do Postgres e as extensões. As dependências npm estão no seu repositório.
A04 Falhas criptográficas4Coberta
A05 Injeção1Coberta
A06 Conceção insegura0Não verificável A conceção insegura está na forma como a sua aplicação funciona, não nas definições.
A07 Falhas de autenticação8Coberta
A08 Falhas de integridade de software ou dados1Coberta
A09 Falhas de registo e alerta de segurança2Coberta
A10 Tratamento incorreto de condições excecionais0Não verificável O tratamento de erros está no código da sua aplicação, que o acesso de leitura nunca vê.

As 45 verificações

VerificaçãoIDOWASPPior caso
RLS desativado em tabelas expostasrls_disabled_exposedA01Crítica
Políticas que permitem todas as linhaspolicy_always_trueA01Alta
Políticas que confiam nos metadados do utilizadorpolicy_uses_user_metadataA01Alta
Políticas de escrita abertas a visitantes anónimosanon_write_policiesA01Alta
Vistas que contornam o RLSviews_without_security_invokerA01Alta
Vistas materializadas ou tabelas externas na APImatviews_or_foreign_tables_exposedA01Média
Funções security definer chamáveis a partir da APIsecurity_definer_executableA01Alta
Políticas de storage abertas a visitantes anónimosstorage_objects_anon_policiesA01Alta
Buckets de storage públicospublic_bucketsA01Baixa
Canais privados do Realtime sem proteçãorealtime_messages_rlsA01Alta
Permissões de escrita sem uso para visitantes anónimosanon_table_grants_writeA01Baixa
Papéis que contornam o RLSroles_bypass_rlsA01Alta
Colunas de acesso que os utilizadores com sessão iniciada podem alterarauthz_columns_writableA01Alta
Apagar e voltar a inserir altera uma coluna protegidadelete_insert_bypassA01Alta
Privilégios de tabela desnecessários para utilizadores com sessão iniciadaauthenticated_table_grants_extraA01Baixa
Privilégios por omissão que abrem novos objetos à APIdefault_privileges_api_rolesA01Baixa
Funções security definer que verificam current_userdefiner_checks_current_userA01Média
Políticas sem papel ou sem comandopolicies_without_to_or_forA01Baixa
Problemas do Security Advisor do Supabaseadvisor_lintsA02Alta
Esquemas adicionais expostos na Data APIextra_exposed_schemasA02Alta
Carateres universais nos URLs de redirecionamentoredirect_wildcardsA02Média
URLs de redirecionamento com http ou para localhostinsecure_redirect_urlsA02Média
Inícios de sessão anónimos ativosanonymous_signins_enabledA02Média
CAPTCHA desativado no registo e no início de sessãocaptcha_disabledA02Média
Base de dados aberta a qualquer endereço IPnetwork_openA02Média
Buckets públicos sem limites de uploadpublic_bucket_no_limitsA02Baixa
Sem limite de linhas nas respostas da Data APIpostgrest_max_rowsA02Média
Atualização do Postgres disponívelpostgres_upgrade_availableA03Média
Extensões instaladasextensions_listedA03Info
SSL não obrigatório nas ligações à base de dadosssl_enforcement_offA04Média
Tokens de acesso válidos por mais de uma horajwt_expiry_longA04Média
Colunas de aspeto sensível legíveis por visitantes anónimossensitive_columns_exposedA04Alta
Segredos do Vault legíveis pelos papéis da APIvault_secrets_exposedA04Crítica
SQL dinâmico construído a partir de cadeias de textodynamic_sql_concatA05Média
Comprimento mínimo de palavra-passe curtopassword_min_lengthA07Alta
Proteção contra palavras-passe divulgadas desativadaleaked_password_protection_offA07Média
Confirmação de email desativadaemail_confirm_offA07Alta
Alteração segura de email desativadasecure_email_change_offA07Média
Códigos de uso único válidos por mais de uma horaotp_expiry_longA07Média
Nenhum método multifator ativomfa_unavailableA07Média
Rotação de refresh tokens desativadarefresh_token_rotation_offA07Média
Alteração de palavra-passe sem nova autenticaçãopassword_change_no_reauthA07Baixa
Edge Functions sem verificação de JWTedge_functions_without_jwtA08Baixa
pgaudit não instaladopgaudit_missingA09Info
Não foram encontradas cópias de segurançabackups_or_pitrA09Média

Perguntas

Em que difere do Security Advisor do Supabase?

Os resultados do Security Advisor são uma das verificações. A análise acrescenta as definições de auth, as políticas de storage, as Edge Functions, as cópias de segurança e as definições de rede, agrupa tudo segundo o OWASP Top 10:2025 e dá uma correção para cada problema.

O Supabase é seguro por predefinição?

A plataforma é mantida pelo Supabase, mas as regras de acesso são suas. Uma tabela nova criada com SQL simples tem o Row Level Security desativado, e uma política escrita como using (true) deixa qualquer pessoa com a chave anon ler a tabela. A análise procura exatamente estas definições.

O que significa «RLS desativado» e como o ativo?

Com o RLS desativado numa tabela de um esquema exposto, qualquer pessoa com a sua chave anon consegue ler todas as linhas através da Data API. Ative-o com alter table public.a_sua_tabela enable row level security; e depois adicione as políticas do acesso que pretende.

É seguro ter a chave anon do Supabase no navegador?

Sim, a chave anon (publicável) foi pensada para ser pública. Só pode fazer o que as suas permissões e políticas de RLS permitirem, e é por isso que a análise as verifica. A chave service_role ignora o RLS e nunca deve chegar ao navegador.

Verifique o seu próprio projeto

Grátis e só de leitura. O relatório aparece nesta página.

Verificar o meu projeto Supabase