SCANBLIND

RLS no Supabase

Atualizado em 6 de novembro de 2026 · Todos os guias

O Row Level Security (RLS) é a regra que o próprio banco aplica em cada leitura e escrita, como um filtro automático em toda consulta. No Supabase, ele é o que impede um visitante de ler os dados de todos os seus clientes com a chave pública que vai no app.

1. Ache as tabelas sem RLS

No Supabase, abra o SQL Editor e rode:

select tablename from pg_tables
where schemaname = 'public' and rowsecurity = false;

Toda tabela que aparecer está sem a proteção.

2. Ligue o RLS

alter table public.pedidos enable row level security;

Troque pedidos pelo nome da sua tabela. Segundo a documentação do Supabase, com o RLS ligado e nenhuma regra criada, a API não devolve nenhum dado para a chave pública. Isso pode "quebrar" telas do app até você criar as regras, então faça primeiro num ambiente de teste.

3. Crie a regra por usuário

create policy "cada um vê os próprios pedidos"
on public.pedidos for select
to authenticated
using ( (select auth.uid()) = user_id );

Repita para insert, update e delete conforme o app precisar. Em update, use também with check para o usuário não conseguir passar a linha para outra pessoa.

4. Cuidado com as colunas de permissão

Se a tabela de perfis tem colunas como role, plano ou saldo, uma regra de update ampla deixa o usuário se promover a administrador. Tire essas colunas do alcance do usuário (outra tabela ou só o servidor altera).

5. Confira de verdade

Se você usa IA para corrigir, peça para ela mostrar o SQL antes de rodar e entregar junto o SQL para desfazer.

Quer conferir o seu app agora?

O scan grátis do Scanblind testa chaves expostas, arquivos públicos, cabeçalhos, e-mail e-mail, subdomínios e outros riscos comuns, sem login, e entrega o prompt pronto para a sua IA corrigir.

Escanear meu app grátis

Fontes

  1. Supabase: Row Level Security
  2. OWASP Top 10:2025 (A01: controle de acesso quebrado)