Verificações do Shield

Cada verificação tem como corrigir e um comando para conferir a correção.

Severidade

Supabase

10 verificações
SB-004Crítico

RLS bloqueia UPDATE e DELETE pela chave anônima

Envia PATCH e DELETE para cada tabela com o filtro id=eq.__veloz_audit_nonexistent__, que não corresponde a nenhuma linha, e confere se o banco recusa a operação por permissão.

Ver detalhes →
SB-005Crítico

RLS bloqueia INSERT pela chave anônima

Envia um INSERT para cada tabela com um id sentinela e uma coluna que não existe, e confere se o banco recusa a operação por permissão.

Ver detalhes →
SB-007Alto

Funções de rede fora do alcance da chave anônima

Chama por RPC, com a chave anônima, funções das extensões http, pg_net e dblink, e falha se alguma delas puder ser executada.

Ver detalhes →
SB-009Alto

Tabela auth.users fora do alcance da chave anônima

Pede /rest/v1/users com o cabeçalho Accept-Profile: auth, que seleciona o schema auth, e falha se a resposta for 200.

Ver detalhes →
SB-002Médio

Cadastro por e-mail exige confirmação

Lê as configurações públicas de autenticação (/auth/v1/settings) e falha quando o cadastro está aberto, o login por e-mail está ativo e novas contas são confirmadas sem validar o e-mail.

Ver detalhes →
SB-003Médio

Lista de buckets do Storage fechada para a chave anônima

Pede a lista de buckets (/storage/v1/bucket) com a chave anônima e falha se a resposta trouxer pelo menos um bucket.

Ver detalhes →
SB-008Médio

CORS da API não libera credenciais para qualquer origem

Envia um preflight (OPTIONS) para /rest/v1/ com a origem https://evil.example e falha se a resposta permitir credenciais e aceitar qualquer origem (*) ou repetir a origem recebida.

Ver detalhes →
SB-001Baixo

Schema da API fechado para a chave anônima

Pede a raiz da API REST (/rest/v1/) com a chave anônima e falha se a resposta trouxer o documento OpenAPI com as tabelas, colunas e funções expostas.

Ver detalhes →
SB-006Baixo

Chave anônima com validade de até 10 anos

Decodifica o JWT da chave anônima e falha se a validade (exp menos iat) passar de 10 anos ou se o token não tiver data de expiração.

Ver detalhes →
SB-010Informativo

Total de linhas no cabeçalho Content-Range

Pede a tabela users com Prefer: count=exact e informa se a resposta traz o total de linhas no cabeçalho Content-Range.

Ver detalhes →

Segredos no bundle

7 verificações

Cabeçalhos HTTP

8 verificações
HTTP-008Alto

Arquivos sensíveis inacessíveis (.env, .git/config)

Faz GET em /.git/config, /.env, /.DS_Store e /phpinfo.php e falha se algum responder com status entre 200 e 399.

Ver detalhes →
HTTP-001Médio

HSTS com max-age de pelo menos 180 dias

Falha se a resposta não tiver o cabeçalho Strict-Transport-Security ou se o max-age for menor que 15552000 segundos (180 dias).

Ver detalhes →
HTTP-003Médio

Proteção contra clickjacking

Falha se a resposta não tiver X-Frame-Options com DENY ou SAMEORIGIN nem a diretiva frame-ancestors na CSP.

Ver detalhes →
HTTP-006Médio

CORS não libera credenciais para qualquer origem

Envia uma requisição com a origem https://veloz-shield-probe.example e falha se a resposta permitir credenciais e aceitar qualquer origem (*) ou repetir a origem recebida.

Ver detalhes →
HTTP-007Médio

Resposta final em HTTPS

Segue até 5 redirecionamentos a partir da URL e falha se o endereço final não for HTTPS.

Ver detalhes →
HTTP-002Baixo

Content-Security-Policy presente

Falha se a resposta não tiver o cabeçalho Content-Security-Policy nem o Content-Security-Policy-Report-Only.

Ver detalhes →
HTTP-004Baixo

Versão do servidor fora dos cabeçalhos

Falha se o cabeçalho Server mostrar um número de versão, como nginx/1.18.0, ou se existir qualquer cabeçalho X-Powered-By.

Ver detalhes →
HTTP-005Baixo

HSTS mantido depois de um redirecionamento

Segue no máximo um redirecionamento a partir da URL e falha se a resposta final não tiver o cabeçalho Strict-Transport-Security.

Ver detalhes →