Skip to content

notas mentais de um nerd

tecnologia e finanças

Menu
  • Inicio
  • Sobre
  • BITcontrol
  • Pesquisar
Menu

Aumentando a segurança do supabase e corrigindo o erro rls_disabled_in_public

Posted on abril 15, 2026

Se você recebeu um email “Security vulnerabilities detected in your Supabase projects” provavelmente algumas tabelas do seu supabase estão acessíveis publicamente
O erro mais comum é “Row-Level Security is not enabled.” ou também conhecido como “rls_disabled_in_public“

Este erro indica que uma tabela no seu banco de dados PostgreSQL está vulnerável. Aqui está o resumo do problema e como resolvê-lo:
* Lembre-se de alterar o nome da TABELA


?? O Problema: RLS Desativado

O RLS (Row Level Security) é o mecanismo que controla quais linhas um usuário pode ver ou editar. Quando você usa ferramentas como o PostgREST (ou Supabase), as tabelas no schema public ficam expostas via API.

Se o RLS não está ativado na tabela public.TABELA:

  1. Exposição de Dados: Qualquer pessoa com a URL da sua API pode, em teoria, ler todos os dados da tabela.
  2. Falta de Controle: Sem políticas (policies), o banco de dados não sabe distinguir quais dados pertencem a qual usuário.

?? Como Corrigir

Para resolver isso, você precisa seguir dois passos: habilitar o RLS e criar políticas de acesso.

1. Habilitar o RLS

Execute este comando no seu editor SQL para “trancar as portas” da tabela:

SQL

ALTER TABLE public.TABELA ENABLE ROW LEVEL SECURITY;

2. Criar Políticas de Acesso (Exemplos)

Uma vez ativado, ninguém verá nada (nem mesmo você via API) a menos que você defina uma regra. Escolha a que melhor se adapta ao seu caso:

  • Opção A: Permitir leitura apenas para usuários autenticados

SQL

CREATE POLICY "Permitir leitura para usuários autenticados" 
ON public.TABELA 
FOR SELECT 
TO authenticated 
USING (true);

SQL

CREATE POLICY "Usuários veem apenas seus próprios dados" 
ON public.TABELA 
FOR SELECT 
USING (auth.uid() = user_id);

? Recomendação

Sempre que criar uma nova tabela em um schema público, a primeira ação deve ser o comando ENABLE ROW LEVEL SECURITY. É melhor começar com o acesso totalmente bloqueado e abrir as permissões conforme a necessidade do que deixar os dados expostos por padrão.

Compartilhe isso:

  • Compartilhar no X(abre em nova janela) 18+
  • Compartilhar no Facebook(abre em nova janela) Facebook
  • Imprimir(abre em nova janela) Imprimir
©2026 notas mentais de um nerd | Design: Newspaperly WordPress Theme