Guia · Lovable
O Lovable é seguro? O que fica exposto nos apps feitos com ele
A plataforma, sozinha, não é o que expõe os dados. O que expõe é a configuração do app que ela gera: principalmente as regras de acesso do banco de dados (o RLS do Supabase) e chaves secretas que acabam no código que vai para o navegador. As duas coisas dá para conferir em minutos.
A resposta curta
O Lovable gera apps que funcionam — e funcionar é o que a IA persegue. O que decide se os dados ficam ao alcance de estranhos são duas coisas que só aparecem para quem olha de fora: quem pode ler cada tabela do banco e quais chaves vão parar no navegador. Por isso a pergunta útil não é “o Lovable é seguro?”, e sim “o meu app está expondo alguma coisa?”. Essa tem resposta verificável, e é o que este guia mostra.
O que aconteceu em 2025
Em março de 2025, o pesquisador Matt Palmer analisou 1.645 apps publicados com o Lovable e encontrou 303 pontos de acesso, em 170 apps — cerca de 10% —, com tabelas do banco de dados que respondiam a qualquer pessoa, sem login. O caso virou o registro público de vulnerabilidade CVE-2025-48757, divulgado em maio de 2025 (relato do pesquisador).
Desde então a plataforma incluiu verificações de segurança próprias. Mas a causa daquele caso vale para qualquer app que usa o Supabase: se uma tabela não tem regra de acesso, a chave pública do site basta para ler o que está nela.
O que mais aparece exposto
1. Tabelas sem regra de acesso (RLS)
O app conversa com o banco direto do navegador, usando uma chave que é pública de propósito. Quem separa o que cada pessoa pode ver é o Row Level Security. Tabela sem RLS — ou com uma regra que deixa todo mundo passar — entrega os dados a qualquer visitante. O passo a passo para conferir e fechar está no guia Supabase RLS.
2. A chave service_role no código do site
O Supabase tem duas chaves. A anon foi feita para ir no navegador. A service_role ignora todas as regras de acesso — é a chave-mestra do banco. Se ela aparecer no JavaScript do site, qualquer visitante pode ler, alterar e apagar tudo.
3. Chaves de outros serviços no front-end
OpenAI, Stripe, serviços de e-mail: quando a IA precisa fazer uma chamada funcionar, às vezes faz direto do navegador — e a chave secreta vai junto. Veja chave de API exposta: como descobrir e o que fazer.
4. Área de administrador escondida só na tela
Esconder o botão de “admin” de quem não é admin não impede ninguém de chamar a mesma operação direto no banco. A checagem de permissão precisa estar na regra do banco ou no servidor — não na interface.
Como conferir o seu app
- Rode as verificações do próprio Lovable. A plataforma tem uma verificação rápida e uma profunda, que olham as regras do banco e o código do projeto (documentação oficial).
- Confira as tabelas no painel do Supabase. O editor de tabelas sinaliza as que estão sem RLS, e as recomendações de segurança (Security Advisor) listam as tabelas públicas sem regra.
- Olhe de fora. As verificações de dentro dizem como o projeto está configurado. Uma análise externa mostra o que um visitante qualquer consegue ver na versão publicada — que é o que importa se o app já está no ar.
Prompt para colar no Lovable
Ele pede à IA que feche o banco e mostre o que mudou — confira a lista que ela devolver.
Revise a segurança do banco de dados deste projeto:
1. Ative Row Level Security em todas as tabelas do schema public.
2. Nas tabelas com dados de usuário, crie políticas para que cada pessoa
só consiga ler, criar, alterar e apagar as próprias linhas
(user_id = auth.uid()).
3. Tabelas de conteúdo público (como um catálogo) podem permitir apenas
leitura (SELECT) para todos — nunca INSERT, UPDATE ou DELETE sem login.
4. Confirme que a chave service_role não aparece em nenhum arquivo do
front-end e que nenhuma chave secreta usa o prefixo VITE_.
5. No fim, liste cada tabela e a política que ficou valendo.Depois de cada mudança, confira de novo
Um prompt novo pode reescrever uma parte que estava certa. A regra de acesso que você fechou hoje pode ser desfeita por uma alteração de amanhã.