SB-004Críticodata-store

RLS bloqueia UPDATE/DELETE pela chave anônima

Tenta PATCH/DELETE com filtro impossível. 204 = falha (RLS aberta). 42501 = passa.

Por que importa

É a vulnerabilidade mais comum em projetos Supabase em produção: RLS ativo na leitura mas esquecido na escrita. Com a chave anon pública do bundle JS, qualquer visitante reescreve ou apaga linhas inteiras.

Como corrigir

Crie políticas explícitas `FOR UPDATE` e `FOR DELETE` em **cada** tabela pública, amarradas ao `auth.uid()`. Nunca confie em `USING (true)` para tabelas escriváveis.

Verificar a correção

SB-004 · verifynão-destrutivo
# Sonda não-destrutiva — o filtro nunca casa com nenhuma linha real.
curl -s -o /dev/null -w '%{http_code}' \
  -X PATCH "$SUPABASE_URL/rest/v1/<tabela>?id=eq.__veloz_audit_nonexistent__" \
  -H "apikey: $ANON_KEY" -H "Authorization: Bearer $ANON_KEY" \
  -H 'Content-Type: application/json' -H 'Prefer: return=minimal' \
  -d '{}'

Referências