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.
Por que importa
Com INSERT aberto, qualquer visitante cria linhas nas suas tabelas: cadastros falsos, spam ou registros que disparam triggers com mais permissões do que a role anon.
Como corrigir
Habilite RLS na tabela e crie uma política FOR INSERT com WITH CHECK ligado ao usuário, por exemplo WITH CHECK (auth.uid() = user_id). Não conceda INSERT à role anon com GRANT.
Como conferir a correção
SB-005
# A coluna inexistente deve fazer o banco recusar a linha. Numa tabela sem RLS,
# essa recusa é a única proteção, então prefira rodar em um projeto de teste.
curl -s -w '\n%{http_code}\n' \
-X POST "$SUPABASE_URL/rest/v1/<tabela>?on_conflict=__veloz_audit_nonexistent__" \
-H "apikey: $ANON_KEY" -H "Authorization: Bearer $ANON_KEY" \
-H 'Content-Type: application/json' \
-d '{"id":"__veloz_audit_nonexistent__","__veloz_audit_field___veloz_audit_nonexistent__":"__veloz_audit_nonexistent__"}'