Executando verificação de segurança...
4

[PITCH] Quase perdi meu SaaS por não configurar RLS no Supabase (e-book sobre Row Level Security)

Descobri da pior forma que meu SaaS estava vulnerável quando consegui ver dados de todos os usuários com um simples SELECT * FROM users.

🚨 O que aconteceu

Criei meu SaaS, funcionava perfeitamente. Mas quando testei com role "authenticated" no SQL Editor do Supabase (em vez da role "postgres"), aconteceu isso: todos os dados de todos os usuários estavam expostos.

Resultado: tive que estudar Row Level Security na marra.

📊 O problema é mais comum do que parece

72 mil fotos vazadas no app Tea em julho/2025. Mesmo problema: falta de configuração básica de segurança.

  • Firebase sem regras = dados públicos
  • Supabase sem RLS = dados públicos
  • A IA foca em "fazer funcionar", não em proteger

📚 O que compilei no e-book

60+ páginas focadas em ensinar RLS:

  • ⚡ Diagnóstico em 5 min: Scripts para testar se você está vulnerável
  • 🎯 3 arquiteturas completas: Single-tenant, Multi-tenant, Marketplace
  • 📋 Scripts copy-paste: Testados em produção, explicados linha por linha
  • 🚨 Solução de emergência: Para parar vazamentos imediatos

🇧🇷 Por que em português?

É o único material completo sobre RLS em PT-BR. A documentação oficial é básica e os tutoriais param no "hello world".

🔍 Teste rápido (faça agora)

  1. Abra seu Supabase → SQL Editor
  2. Mude de "postgres" para "authenticated" (dropdown no canto)
  3. Execute: SELECT * FROM users;
  4. Se retornar dados = você está vulnerável
-- 🚨 TESTE: Veja se seus dados estão expostos
SELECT * FROM users;

Link: https://samuelrizzon.dev/

Quem já passou por algo parecido? Como descobriram que tinham falhas de segurança?


PS: Se alguém quiser trocar uma ideia sobre implementação de RLS, posso ajudar aqui nos comentários.

Carregando publicação patrocinada...
2

Sobre seu "teste rápido" é que estaria vulnerável se retornar dados de outros usuários além do seu. Correto ? Pois você precisa "Impersonating" algum usuário.

De modo geral RLS é essencial mesmo.

1

Isso mesmo, tem que selecionar um usuário pra fazer a query como se fosse ele. É a forma mais fácil de ver quem pode acessar o que no banco de dados.

1

RLS é segurança adicional, no nivel de banco de dados.

Mas o problema está na API, ao permitir SQL injection e dar poder ao usuário logado ececutar qualquer query.

1

Mas se a RLS estiver bem configurada, o usuário não consegue fazer nenhuma operação suspeita com o acesso da API, somente o que a policy permite.

1

Isso não é problema de banco de dados. Sua API provavelmente possui alto nível de acoplamento com banco. Em uma API bem projetada seu backend não sabe o que acontece no seu banco.
O problema hoje em dia é que existem tantos níveis de abstração, que o entendimento dos princípios de base se perdeu.

Recomendo dar uma lida no padrão de projeto
Repository e no princípio da inversão de dependência.

1

Eu acho curioso que Supabase é o único lugar que eu vejo RLS sendo não só o padrão, como recomendado e elogiado, antes dele sempre que entrava numa conversa e alguém falava sobre RLS nunca era para falar coisas boas.

Qual tua experiencia anterior com RLS?

Conteúdo excluído
1

Cara, seu telefone é um dado pessoal que não deveria ser compartilhado assim, alguém mal intencionado pode abusar dessa informação, ao invés disso, compartilhe uma rede social publica, como Instagram.