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 '{}'