Pular para o conteúdo principal
Não se esqueça de corrigir os resultados do Security CheckerCertifique-se de tratar os resultados do Security Checker integrado da Lovable antes de publicar seu app online. O Security Checker verifica automaticamente seu app e fornece recomendações valiosas para melhorar a segurança.
Embora a Lovable AI e ferramentas como o Security Checker identifiquem e evitem uma ampla variedade de problemas de segurança, nem sempre é possível ou realista descobrir ou corrigir automaticamente todos os problemas que podem aparecer depois que um app é lançado na internet. Este guia oferece uma visão mais aprofundada de como os apps da Lovable funcionam nos bastidores, quais são as práticas importantes de segurança que podem ajudar você a proteger os dados dos seus clientes e maneiras de evitar erros comuns.

Entendendo a arquitetura do Lovable

Salvo indicação em contrário, o Lovable gera aplicações com a seguinte arquitetura:
  • Frontend: aplicação TypeScript/React
  • Backend: Supabase Edge Functions (funções serverless)
  • Database: Supabase (PostgreSQL com recursos em tempo real)
Essa separação de responsabilidades é fundamental para manter a segurança. Cada camada tem funções específicas e considerações de segurança próprias.

Segurança de front-end: nunca confie no código do lado do cliente

A regra de ouro: código de frontend é público

Todo código React roda no navegador do usuário e é público por natureza. Os usuários podem inspecionar, modificar ou burlar qualquer código de frontend. Portanto:
  • Nunca armazene segredos no código de frontend - chaves de API, senhas ou configurações sensíveis
  • Nunca faça validação no código de frontend - a validação no lado do cliente pode ser burlada
  • Nunca confie em dados do frontend - sempre valide no lado das Edge Functions

Erros comuns de segurança no front-end

// ❌ ERRADO - Nunca faça isso
const API_KEY = "sk-1234567890abcdef"; // Exposta aos usuários
const validateUser = (userData) => {
  // A validação no lado do cliente pode ser contornada
  return userData.email.includes('@');
};
A forma correta é pedir para o Lovable adicionar uma chave secreta — isso abrirá um formulário e armazenará o segredo com segurança no backend do próprio Lovable.

Exemplos de instruções de IA para validar e aprimorar a segurança do frontend

Adicione uma chave de API para pagamentos do Stripe de forma segura sem expô-la no código frontend
Mova a lógica de validação dos componentes React para edge functions para maior segurança
Revise o código frontend em busca de segredos expostos, chaves de API ou informações sensíveis. Tenho uma página de configurações que exibe as preferências do usuário e quero garantir que nenhum dado sensível fique visível
Identifique validações do lado do cliente que devem ser movidas para edge functions de backend
Para mais instruções, consulte a Prompt Library da Lovable.

Segurança do backend: mova a lógica de negócios para Edge Functions

Trate Edge Functions como sua camada de API

Supabase Edge Functions devem conter toda a sua lógica de negócios, validação e operações sensíveis:
  • Autenticação e autorização
  • Validação e sanitização de dados
  • Lógica de negócios e fluxos de trabalho
  • Integração com serviços externos
  • Processamento de dados sensíveis

Boas práticas para Edge Functions

Pense nas Edge Functions como os seguranças e gerentes do seu aplicativo. Elas cuidam de todo o trabalho importante que precisa ser feito com segurança, longe das partes voltadas ao público do seu aplicativo.

O que as Edge Functions devem fazer

Autenticação e autorização de usuário
  • Sempre verifique se os usuários são realmente quem dizem ser antes de permitir que executem ações
  • Verifique se os usuários têm as permissões corretas para operações específicas
  • Nunca confie que alguém está logado só porque diz que está
Validação e sanitização de dados
  • Verifique todos os dados recebidos para garantir que estejam no formato correto
  • Remova qualquer conteúdo potencialmente nocivo das entradas de usuário
  • Certifique-se de que os dados atendem às suas regras de negócio antes de processá-los
Lógica de negócio e fluxos de trabalho
  • Implemente processos de negócio complexos, como processamento de pedidos, cálculos de pagamento ou registro de usuários
  • Gerencie relacionamentos entre diferentes conjuntos de dados
  • Coordene várias etapas em uma única operação
Integração com serviços externos
  • Conecte-se com segurança a serviços de terceiros, como processadores de pagamento, provedores de e-mail ou APIs
  • Mantenha chaves de API e credenciais confidenciais em segurança
  • Trate erros e timeouts de forma adequada
Processamento de dados sensíveis
  • Processe informações pessoais, dados financeiros ou outros conteúdos sensíveis
  • Aplique criptografia ou outras medidas de segurança quando necessário
  • Registre eventos importantes para auditoria de segurança

Benefícios de segurança das Edge Functions

Isolamento: Edge Functions são executadas em um ambiente seguro, separado do seu frontend, o que torna muito mais difícil para invasores acessarem código ou dados sensíveis. Segurança centralizada: Todas as verificações de segurança acontecem em um único lugar, facilitando a manutenção e a atualização das políticas de segurança. Sem exposição no lado do cliente: A lógica de negócios sensível nunca chega ao navegador do usuário, onde poderia ser visualizada ou modificada. Validação consistente: Cada requisição passa pelo mesmo processo de validação, garantindo segurança consistente em todo o seu aplicativo.

Exemplo de instruções de IA para Edge Functions seguras

Crie uma função de borda para registro de usuário com validação adequada e verificações de segurança. Os usuários devem fornecer e-mail, senha e foto de perfil opcional durante o cadastro
Mova a lógica de processamento de pagamentos do frontend para uma função de borda segura. Tenho um componente de checkout que atualmente processa pagamentos Stripe diretamente no navegador
Crie uma função de borda para upload de arquivos com validação de tipo e tamanho. Os usuários podem fazer upload de fotos de perfil (máx. 5MB) e documentos (apenas PDF, máx. 10MB)
Configure uma função de borda para enviar e-mails de boas-vindas com segurança quando os usuários se cadastrarem. Use a API do provedor para enviar e-mails de boas-vindas personalizados com o nome do usuário e detalhes da conta
Implemente uma função de borda para processar eventos de webhook de serviços externos. Gerencie confirmações de pagamento do Stripe e atualize o status do pedido no banco de dados
Para mais instruções de IA, consulte a Biblioteca de Prompts de IA da Lovable.

Segurança do banco de dados: mantenha o RLS simples e implemente-o desde o início

Row Level Security (RLS) no Lovable

O Lovable configura automaticamente políticas básicas de RLS para suas tabelas, mas você deve revisá‑las e personalizá‑las com base nas necessidades de segurança do seu app. Pense em RLS como as regras que determinam quem pode ver e modificar quais dados no seu banco de dados. Revisar antecipadamente é fundamental: é muito mais fácil ajustar políticas de RLS quando seu app ainda é novo do que depois que os usuários já criaram dados. Simplicidade é segurança: mantenha as políticas de RLS simples e focadas em controle de acesso aos dados, não em lógica de negócios complexa. As políticas padrão do Lovable geralmente são um bom ponto de partida.

Padrões comuns de RLS em apps da Lovable

Proteção de dados pessoais
  • Usuários devem ver apenas seu próprio perfil, configurações e dados pessoais
  • Padrão: “Usuários só podem acessar seus próprios dados”
Acesso baseado em equipe
  • Membros da equipe podem ver dados de Projeto compartilhados dentro da própria equipe
  • Padrão: “Usuários podem acessar dados das equipes às quais pertencem”
Conteúdo público com propriedade
  • Posts públicos que qualquer pessoa pode ler, mas apenas os proprietários podem editar
  • Padrão: “Qualquer pessoa pode ler, apenas os proprietários podem modificar”
Acesso baseado em organização
  • Funcionários da empresa podem acessar dados da empresa
  • Padrão: “Usuários podem acessar dados da sua organização”

Revisando o RLS no seu app Lovable

Verifique suas tabelas
  • Revise quais tabelas têm RLS habilitado
  • Verifique se as tabelas com dados sensíveis estão protegidas
  • Certifique-se de que as tabelas com dados públicos tenham políticas de leitura apropriadas
Teste os padrões de acesso
  • Verifique se usuários só podem ver seus próprios dados
  • Teste se dados compartilhados estão acessíveis para as pessoas certas
  • Confirme que dados públicos estão visíveis para todos
Problemas comuns a observar
  • Tabelas sem RLS habilitado em dados sensíveis
  • Políticas permissivas demais que expõem dados em excesso
  • Falta de políticas para novas tabelas ou recursos

Exemplos de Prompts de IA para revisão de RLS

Revise as políticas de RLS no meu aplicativo Lovable para garantir que os usuários acessem apenas seus próprios dados e que os dados compartilhados estejam adequadamente protegidos
Verifique as políticas RLS para as tabelas users e posts - os usuários devem ver apenas o próprio perfil, mas podem ler todas as postagens públicas
Adicione políticas de RLS à tabela de configurações para que os usuários acessem apenas suas próprias configurações
Corrigir acesso excessivamente permissivo - usuários atualmente veem todas as postagens de todos os usuários, restringir apenas às próprias postagens e postagens públicas
Configure o RLS para as tabelas teams e projects para que os membros da equipe vejam apenas os projetos da própria equipe
Garanta que os usuários acessem apenas dados da própria organização no seu aplicativo multilocatário
Audite as políticas RLS em busca de falhas de segurança onde usuários possam acessar dados não autorizados
Simplifique políticas RLS complexas mantendo a segurança - as políticas atuais estão complicadas demais

Checklist rápida de RLS

  • Todas as tabelas sensíveis têm RLS habilitado
  • Usuários só podem acessar seus próprios dados pessoais
  • Dados compartilhados têm controles de acesso apropriados
  • Novas tabelas recebem políticas de RLS automaticamente
  • As políticas são simples e fáceis de entender

Segurança de autenticação: mantenha a lógica no lado do servidor

A lógica de autenticação deve ser executada no servidor

Todas as decisões de autenticação, validação de tokens e verificação de usuários devem acontecer no lado do servidor, não no navegador. A autenticação no lado do cliente pode ser facilmente contornada ou manipulada. Princípios fundamentais:
  • Nunca confie em verificações de autenticação no lado do cliente - usuários podem modificar o código do navegador
  • Valide tokens no servidor - sempre verifique a autenticação em Edge Functions
  • Mantenha o gerenciamento de sessão no servidor - deixe o Supabase cuidar do armazenamento seguro das sessões
  • Nunca exponha segredos de autenticação - chaves de API e tokens nunca devem chegar ao front-end

Fluxo de autenticação seguro

// ❌ ERRADO - Lógica de autenticação no lado do cliente
const isAuthenticated = localStorage.getItem('authToken') !== null;
if (isAuthenticated) {
  // Isso pode ser contornado por usuários
  showAdminPanel();
}

// ✅ CORRETO - Validação de autenticação no lado do servidor
// Na função de borda:
const { user } = await supabase.auth.getUser();
if (!user) {
  return new Response('Unauthorized', { status: 401 });
}
// Prossiga com a lógica autenticada

Boas práticas de autenticação

Validação no servidor:
  • Sempre verifique a autenticação do usuário em funções de borda antes de processar requisições
  • Verifique as permissões e funções do usuário no servidor, não em componentes React
  • Valide os tokens de sessão com o banco de dados ou serviço de autenticação
Tratamento no cliente:
  • Use o gerenciamento de sessão nativo do Supabase para armazenamento seguro de tokens
  • Exiba a interface com base no estado de autenticação, mas nunca tome decisões de segurança
  • Redirecione para a página de login quando as sessões expirarem, mas valide no servidor primeiro

Proteção da área de trabalho: proteja aplicativos internos

Certifique-se de que os apps internos tenham a visibilidade definida como “Workspace”

Para aplicativos que não devem ser acessíveis publicamente:
  • Defina a visibilidade do Projeto de apps internos como “Workspace” no painel do Projeto
  • Verifique se eles não estão publicados na internet
  • Use autenticação adequada para todas as ferramentas internas
  • Realize auditorias regulares do acesso a aplicativos privados

Resumo das práticas recomendadas de segurança

Fluxo de desenvolvimento

  1. Comece com a segurança em mente - Implemente RLS e autenticação desde o primeiro dia
  2. Use o verificador de segurança - Execute regularmente o verificador de segurança do Lovable
  3. Siga as recomendações - Implemente todas as sugestões de segurança
  4. Teste minuciosamente - Verifique se as medidas de segurança funcionam conforme o esperado
  5. Documente as decisões de segurança - Registre as escolhas de segurança e suas justificativas

Auditorias de segurança regulares

  • Revisar as permissões das funções de borda
  • Auditar políticas de RLS
  • Verificar se há segredos expostos
  • Verificar fluxos de autenticação
  • Testar controles de acesso

Checklist comum de segurança

  • Nenhum segredo no código de frontend
  • Todas as validações em funções de borda
  • Políticas de RLS implementadas e testadas
  • Autenticação usando métodos seguros
  • Aplicativos internos devidamente protegidos
  • Verificação de segurança executada e recomendações aplicadas
  • Revisões de segurança realizadas regularmente

Usando o verificador de segurança do Lovable

Lovable fornece um verificador de segurança integrado para ajudar a identificar possíveis problemas de segurança:
  1. Execute o verificador de segurança no painel do seu projeto
  2. Revise todas as recomendações com atenção
  3. Implemente as correções sugeridas o quanto antes
  4. Execute o verificador novamente depois de fazer alterações
  5. Documente quaisquer exceções com uma justificativa clara
Lembre-se: segurança não é uma tarefa única, mas um processo contínuo. Revise e atualize suas medidas de segurança regularmente, conforme seu aplicativo evolui.