Segurança
Como se entra em cada projeto, quem são os usuários, se há autenticação, se está aberto ao público e onde estão os pontos a checar.
Atenção: esta aba é um checklist inferido a partir do inventário dos projetos — não é um scan de segurança real. Itens marcados como Inferido precisam de validação; os marcados como Verificado foram confirmados manualmente. Nada aqui afirma que existe vazamento de service role ou tabela aberta: são hipóteses a conferir no scan de cada projeto.
Projetos em risco alto
8
Sem autenticação identificada
19
Total analisado
37
Ações de segurança do portfólio
- 1.Inventariar chaves: nenhuma service role key pode aparecer em código de tela ou bundle publicado — só em edge function/servidor.
- 2.Rodar o scan de segurança em todos os projetos com banco e tratar os achados de RLS antes de qualquer publicação.
- 3.Padronizar papéis em tabela user_roles separada com função security definer (nunca papel gravado no perfil do usuário).
- 4.Ativar proteção contra senha vazada (HIBP) em todos os projetos com login.
- 5.Trocar links públicos previsíveis por token aleatório com expiração.
- 6.Definir política de retenção e log de acesso para projetos com dado pessoal (LGPD).
- 7.Revisar quem tem acesso ao workspace Lovable e remover contas inativas.
- 8.Após cada mudança de schema em projeto publicado, revalidar as políticas de RLS.
- Forma de acesso
- Aberto ao público (site/página estática)
- Usuários
- A confirmar (provavelmente qualquer visitante)
Pontos a checar
- ?Sem backend: qualquer chave usada pelo front está no bundle e é legível por qualquer visitante.
Ações
- →Auditar o bundle publicado atrás de tokens de API (Stays, Make, webhooks) e mover para um proxy no servidor.
- →Dado pessoal/financeiro: definir base legal LGPD, retenção e log de acesso.
- →Projeto publicado: revalidar as políticas após cada mudança de schema.
- Forma de acesso
- A confirmar: backend ativo, sem sinal de autenticação no inventário
- Usuários
- A confirmar (provavelmente qualquer visitante)
Pontos a checar
- ?A checar: não encontrei sinal de autenticação no inventário — confirmar se há login antes de tratar como aberto.
Ações
- →Revisar RLS: nenhuma tabela com dado real deve ter policy USING (true) para anon.
- →Rodar o scan de segurança do projeto e tratar todo achado de RLS.
- →Confirmar que a chave usada no front é a publishable/anon — nunca a service role.
- →Dado pessoal/financeiro: definir base legal LGPD, retenção e log de acesso.
- →Projeto publicado: revalidar as políticas após cada mudança de schema.
- Forma de acesso
- Aberto ao público (site/página estática)
- Usuários
- A confirmar (provavelmente qualquer visitante)
Pontos a checar
- ?Sem backend: qualquer chave usada pelo front está no bundle e é legível por qualquer visitante.
Ações
- →Auditar o bundle publicado atrás de tokens de API (Stays, Make, webhooks) e mover para um proxy no servidor.
- →Dado pessoal/financeiro: definir base legal LGPD, retenção e log de acesso.
- →Projeto publicado: revalidar as políticas após cada mudança de schema.
- Forma de acesso
- A confirmar: backend ativo, sem sinal de autenticação no inventário
- Usuários
- A confirmar (provavelmente qualquer visitante)
Pontos a checar
- ?A checar: não encontrei sinal de autenticação no inventário — confirmar se há login antes de tratar como aberto.
Ações
- →Revisar RLS: nenhuma tabela com dado real deve ter policy USING (true) para anon.
- →Rodar o scan de segurança do projeto e tratar todo achado de RLS.
- →Confirmar que a chave usada no front é a publishable/anon — nunca a service role.
- →Projeto publicado: revalidar as políticas após cada mudança de schema.
- Forma de acesso
- Aberto ao público (site/página estática)
- Usuários
- A confirmar (provavelmente qualquer visitante)
Pontos a checar
- ?Sem backend: qualquer chave usada pelo front está no bundle e é legível por qualquer visitante.
Ações
- →Auditar o bundle publicado atrás de tokens de API (Stays, Make, webhooks) e mover para um proxy no servidor.
- →Dado pessoal/financeiro: definir base legal LGPD, retenção e log de acesso.
- →Projeto publicado: revalidar as políticas após cada mudança de schema.
- Forma de acesso
- Aberto ao público (site/página estática)
- Usuários
- A confirmar (provavelmente qualquer visitante)
Pontos a checar
- ?Sem backend: qualquer chave usada pelo front está no bundle e é legível por qualquer visitante.
Ações
- →Auditar o bundle publicado atrás de tokens de API (Stays, Make, webhooks) e mover para um proxy no servidor.
- →Dado pessoal/financeiro: definir base legal LGPD, retenção e log de acesso.
- →Projeto publicado: revalidar as políticas após cada mudança de schema.
- Forma de acesso
- Aberto ao público (site/página estática)
- Usuários
- A confirmar (provavelmente qualquer visitante)
Pontos a checar
- ?Sem backend: qualquer chave usada pelo front está no bundle e é legível por qualquer visitante.
Ações
- →Auditar o bundle publicado atrás de tokens de API (Stays, Make, webhooks) e mover para um proxy no servidor.
- →Dado pessoal/financeiro: definir base legal LGPD, retenção e log de acesso.
- Forma de acesso
- Aberto ao público (site/página estática)
- Usuários
- A confirmar (provavelmente qualquer visitante)
Pontos a checar
- ?Sem backend: qualquer chave usada pelo front está no bundle e é legível por qualquer visitante.
Ações
- →Auditar o bundle publicado atrás de tokens de API (Stays, Make, webhooks) e mover para um proxy no servidor.
- →Dado pessoal/financeiro: definir base legal LGPD, retenção e log de acesso.
- →Projeto publicado: revalidar as políticas após cada mudança de schema.
- Forma de acesso
- Login com autenticação e hierarquia de papéis
- Usuários
- Equipe interna e parceiros, com níveis distintos de permissão
Pontos a checar
- Nenhum ponto pendente registrado.
Ações
- →Rodar o scan de segurança do projeto e tratar todo achado de RLS.
- →Confirmar que a chave usada no front é a publishable/anon — nunca a service role.
- →Garantir que os papéis ficam em tabela user_roles separada, com função security definer (nunca no perfil do usuário).
- →Dado pessoal/financeiro: definir base legal LGPD, retenção e log de acesso.
- →Projeto publicado: revalidar as políticas após cada mudança de schema.
- Forma de acesso
- Login com autenticação e hierarquia de papéis
- Usuários
- Equipe interna e parceiros, com níveis distintos de permissão
Pontos a checar
- Nenhum ponto pendente registrado.
Ações
- →Rodar o scan de segurança do projeto e tratar todo achado de RLS.
- →Confirmar que a chave usada no front é a publishable/anon — nunca a service role.
- →Garantir que os papéis ficam em tabela user_roles separada, com função security definer (nunca no perfil do usuário).
- →Dado pessoal/financeiro: definir base legal LGPD, retenção e log de acesso.
- →Projeto publicado: revalidar as políticas após cada mudança de schema.
- Forma de acesso
- Login com autenticação e hierarquia de papéis
- Usuários
- Equipe interna e parceiros, com níveis distintos de permissão
Pontos a checar
- Nenhum ponto pendente registrado.
Ações
- →Rodar o scan de segurança do projeto e tratar todo achado de RLS.
- →Confirmar que a chave usada no front é a publishable/anon — nunca a service role.
- →Garantir que os papéis ficam em tabela user_roles separada, com função security definer (nunca no perfil do usuário).
- →Dado pessoal/financeiro: definir base legal LGPD, retenção e log de acesso.
- →Projeto publicado: revalidar as políticas após cada mudança de schema.
- Forma de acesso
- Login com autenticação e hierarquia de papéis
- Usuários
- Equipe interna e parceiros, com níveis distintos de permissão
Pontos a checar
- Nenhum ponto pendente registrado.
Ações
- →Rodar o scan de segurança do projeto e tratar todo achado de RLS.
- →Confirmar que a chave usada no front é a publishable/anon — nunca a service role.
- →Garantir que os papéis ficam em tabela user_roles separada, com função security definer (nunca no perfil do usuário).
- →Dado pessoal/financeiro: definir base legal LGPD, retenção e log de acesso.
- →Projeto publicado: revalidar as políticas após cada mudança de schema.
- Forma de acesso
- Login com autenticação e hierarquia de papéis
- Usuários
- Equipe interna e parceiros, com níveis distintos de permissão
Pontos a checar
- Nenhum ponto pendente registrado.
Ações
- →Rodar o scan de segurança do projeto e tratar todo achado de RLS.
- →Confirmar que a chave usada no front é a publishable/anon — nunca a service role.
- →Garantir que os papéis ficam em tabela user_roles separada, com função security definer (nunca no perfil do usuário).
- →Se houver links públicos (propostas/cotações), usar token aleatório e prazo de expiração.
- →Dado pessoal/financeiro: definir base legal LGPD, retenção e log de acesso.
- →Projeto publicado: revalidar as políticas após cada mudança de schema.
- Forma de acesso
- Login com autenticação e hierarquia de papéis
- Usuários
- Equipe interna e parceiros, com níveis distintos de permissão
Pontos a checar
- Nenhum ponto pendente registrado.
Ações
- →Rodar o scan de segurança do projeto e tratar todo achado de RLS.
- →Confirmar que a chave usada no front é a publishable/anon — nunca a service role.
- →Garantir que os papéis ficam em tabela user_roles separada, com função security definer (nunca no perfil do usuário).
- →Se houver links públicos (propostas/cotações), usar token aleatório e prazo de expiração.
- →Dado pessoal/financeiro: definir base legal LGPD, retenção e log de acesso.
- →Projeto publicado: revalidar as políticas após cada mudança de schema.
- Forma de acesso
- Login com autenticação e hierarquia de papéis
- Usuários
- Equipe interna e parceiros, com níveis distintos de permissão
Pontos a checar
- Nenhum ponto pendente registrado.
Ações
- →Rodar o scan de segurança do projeto e tratar todo achado de RLS.
- →Confirmar que a chave usada no front é a publishable/anon — nunca a service role.
- →Garantir que os papéis ficam em tabela user_roles separada, com função security definer (nunca no perfil do usuário).
- →Se houver links públicos (propostas/cotações), usar token aleatório e prazo de expiração.
- →Dado pessoal/financeiro: definir base legal LGPD, retenção e log de acesso.
- →Projeto publicado: revalidar as políticas após cada mudança de schema.
- Forma de acesso
- Login com autenticação e hierarquia de papéis
- Usuários
- Equipe interna e parceiros, com níveis distintos de permissão
Pontos a checar
- Nenhum ponto pendente registrado.
Ações
- →Rodar o scan de segurança do projeto e tratar todo achado de RLS.
- →Confirmar que a chave usada no front é a publishable/anon — nunca a service role.
- →Garantir que os papéis ficam em tabela user_roles separada, com função security definer (nunca no perfil do usuário).
- →Dado pessoal/financeiro: definir base legal LGPD, retenção e log de acesso.
- →Projeto publicado: revalidar as políticas após cada mudança de schema.
- Forma de acesso
- Login com autenticação simples
- Usuários
- Usuários cadastrados, todos com o mesmo nível
Pontos a checar
- Nenhum ponto pendente registrado.
Ações
- →Rodar o scan de segurança do projeto e tratar todo achado de RLS.
- →Confirmar que a chave usada no front é a publishable/anon — nunca a service role.
- →Checar se existe hierarquia de papéis (admin / operador / leitura) restringida por RLS.
- →Dado pessoal/financeiro: definir base legal LGPD, retenção e log de acesso.
- →Projeto publicado: revalidar as políticas após cada mudança de schema.
- Forma de acesso
- Login com autenticação simples
- Usuários
- Usuários cadastrados, todos com o mesmo nível
Pontos a checar
- Nenhum ponto pendente registrado.
Ações
- →Rodar o scan de segurança do projeto e tratar todo achado de RLS.
- →Confirmar que a chave usada no front é a publishable/anon — nunca a service role.
- →Checar se existe hierarquia de papéis (admin / operador / leitura) restringida por RLS.
- →Se houver links públicos (propostas/cotações), usar token aleatório e prazo de expiração.
- →Dado pessoal/financeiro: definir base legal LGPD, retenção e log de acesso.
- →Projeto publicado: revalidar as políticas após cada mudança de schema.
- Forma de acesso
- Login com autenticação e hierarquia de papéis
- Usuários
- Equipe interna e parceiros, com níveis distintos de permissão
Pontos a checar
- Nenhum ponto pendente registrado.
Ações
- →Rodar o scan de segurança do projeto e tratar todo achado de RLS.
- →Confirmar que a chave usada no front é a publishable/anon — nunca a service role.
- →Garantir que os papéis ficam em tabela user_roles separada, com função security definer (nunca no perfil do usuário).
- →Projeto publicado: revalidar as políticas após cada mudança de schema.
- Forma de acesso
- Autenticação ativa com área administrativa; acesso adicional restrito por IP no Cloudflare.
- Usuários
- Equipe interna e parceiros, com níveis distintos de permissão
Pontos a checar
- Nenhum ponto pendente registrado.
Ações
- →Rodar o scan de segurança do projeto e tratar todo achado de RLS.
- →Confirmar que a chave usada no front é a publishable/anon — nunca a service role.
- →Garantir que os papéis ficam em tabela user_roles separada, com função security definer (nunca no perfil do usuário).
- →Projeto publicado: revalidar as políticas após cada mudança de schema.
- Forma de acesso
- Login com autenticação e hierarquia de papéis
- Usuários
- Equipe interna e parceiros, com níveis distintos de permissão
Pontos a checar
- Nenhum ponto pendente registrado.
Ações
- →Rodar o scan de segurança do projeto e tratar todo achado de RLS.
- →Confirmar que a chave usada no front é a publishable/anon — nunca a service role.
- →Garantir que os papéis ficam em tabela user_roles separada, com função security definer (nunca no perfil do usuário).
- →Projeto publicado: revalidar as políticas após cada mudança de schema.
- Forma de acesso
- Login com autenticação simples
- Usuários
- Usuários cadastrados, todos com o mesmo nível
Pontos a checar
- Nenhum ponto pendente registrado.
Ações
- →Rodar o scan de segurança do projeto e tratar todo achado de RLS.
- →Confirmar que a chave usada no front é a publishable/anon — nunca a service role.
- →Checar se existe hierarquia de papéis (admin / operador / leitura) restringida por RLS.
- Forma de acesso
- Aberto ao público (site/página estática)
- Usuários
- A confirmar (provavelmente qualquer visitante)
Pontos a checar
- ?Sem backend: qualquer chave usada pelo front está no bundle e é legível por qualquer visitante.
Ações
- →Auditar o bundle publicado atrás de tokens de API (Stays, Make, webhooks) e mover para um proxy no servidor.
- →Projeto publicado: revalidar as políticas após cada mudança de schema.
- Forma de acesso
- Login com autenticação simples
- Usuários
- Usuários cadastrados, todos com o mesmo nível
Pontos a checar
- Nenhum ponto pendente registrado.
Ações
- →Rodar o scan de segurança do projeto e tratar todo achado de RLS.
- →Confirmar que a chave usada no front é a publishable/anon — nunca a service role.
- →Checar se existe hierarquia de papéis (admin / operador / leitura) restringida por RLS.
- →Projeto publicado: revalidar as políticas após cada mudança de schema.
- Forma de acesso
- Login com autenticação e hierarquia de papéis
- Usuários
- Equipe interna e parceiros, com níveis distintos de permissão
Pontos a checar
- Nenhum ponto pendente registrado.
Ações
- →Rodar o scan de segurança do projeto e tratar todo achado de RLS.
- →Confirmar que a chave usada no front é a publishable/anon — nunca a service role.
- →Garantir que os papéis ficam em tabela user_roles separada, com função security definer (nunca no perfil do usuário).
- →Projeto publicado: revalidar as políticas após cada mudança de schema.
- Forma de acesso
- Aberto ao público (site/página estática)
- Usuários
- A confirmar (provavelmente qualquer visitante)
Pontos a checar
- ?Sem backend: qualquer chave usada pelo front está no bundle e é legível por qualquer visitante.
Ações
- →Auditar o bundle publicado atrás de tokens de API (Stays, Make, webhooks) e mover para um proxy no servidor.
- →Se houver links públicos (propostas/cotações), usar token aleatório e prazo de expiração.
- →Projeto publicado: revalidar as políticas após cada mudança de schema.
- Forma de acesso
- Login com autenticação simples
- Usuários
- Usuários cadastrados, todos com o mesmo nível
Pontos a checar
- Nenhum ponto pendente registrado.
Ações
- →Rodar o scan de segurança do projeto e tratar todo achado de RLS.
- →Confirmar que a chave usada no front é a publishable/anon — nunca a service role.
- →Checar se existe hierarquia de papéis (admin / operador / leitura) restringida por RLS.
- →Projeto publicado: revalidar as políticas após cada mudança de schema.
- Forma de acesso
- Aberto ao público (site/página estática)
- Usuários
- A confirmar (provavelmente qualquer visitante)
Pontos a checar
- ?Sem backend: qualquer chave usada pelo front está no bundle e é legível por qualquer visitante.
Ações
- →Auditar o bundle publicado atrás de tokens de API (Stays, Make, webhooks) e mover para um proxy no servidor.
- Forma de acesso
- Aberto ao público (site/página estática)
- Usuários
- A confirmar (provavelmente qualquer visitante)
Pontos a checar
- ?Sem backend: qualquer chave usada pelo front está no bundle e é legível por qualquer visitante.
Ações
- →Auditar o bundle publicado atrás de tokens de API (Stays, Make, webhooks) e mover para um proxy no servidor.
- →Projeto publicado: revalidar as políticas após cada mudança de schema.
- Forma de acesso
- Aberto ao público (site/página estática)
- Usuários
- A confirmar (provavelmente qualquer visitante)
Pontos a checar
- ?Sem backend: qualquer chave usada pelo front está no bundle e é legível por qualquer visitante.
Ações
- →Auditar o bundle publicado atrás de tokens de API (Stays, Make, webhooks) e mover para um proxy no servidor.
- →Projeto publicado: revalidar as políticas após cada mudança de schema.
- Forma de acesso
- Aberto ao público (site/página estática)
- Usuários
- A confirmar (provavelmente qualquer visitante)
Pontos a checar
- ?Sem backend: qualquer chave usada pelo front está no bundle e é legível por qualquer visitante.
Ações
- →Auditar o bundle publicado atrás de tokens de API (Stays, Make, webhooks) e mover para um proxy no servidor.
- →Se houver links públicos (propostas/cotações), usar token aleatório e prazo de expiração.
- Forma de acesso
- Login com autenticação simples
- Usuários
- Usuários cadastrados, todos com o mesmo nível
Pontos a checar
- Nenhum ponto pendente registrado.
Ações
- →Rodar o scan de segurança do projeto e tratar todo achado de RLS.
- →Confirmar que a chave usada no front é a publishable/anon — nunca a service role.
- →Checar se existe hierarquia de papéis (admin / operador / leitura) restringida por RLS.
- →Projeto publicado: revalidar as políticas após cada mudança de schema.
- Forma de acesso
- Aberto ao público (site/página estática)
- Usuários
- A confirmar (provavelmente qualquer visitante)
Pontos a checar
- ?Sem backend: qualquer chave usada pelo front está no bundle e é legível por qualquer visitante.
Ações
- →Auditar o bundle publicado atrás de tokens de API (Stays, Make, webhooks) e mover para um proxy no servidor.
- Forma de acesso
- Aberto ao público (site/página estática)
- Usuários
- A confirmar (provavelmente qualquer visitante)
Pontos a checar
- ?Sem backend: qualquer chave usada pelo front está no bundle e é legível por qualquer visitante.
Ações
- →Auditar o bundle publicado atrás de tokens de API (Stays, Make, webhooks) e mover para um proxy no servidor.
- →Projeto publicado: revalidar as políticas após cada mudança de schema.
- Forma de acesso
- Aberto ao público (site/página estática)
- Usuários
- A confirmar (provavelmente qualquer visitante)
Pontos a checar
- ?Sem backend: qualquer chave usada pelo front está no bundle e é legível por qualquer visitante.
Ações
- →Auditar o bundle publicado atrás de tokens de API (Stays, Make, webhooks) e mover para um proxy no servidor.
- →Projeto publicado: revalidar as políticas após cada mudança de schema.
- Forma de acesso
- Aberto ao público (site/página estática)
- Usuários
- A confirmar (provavelmente qualquer visitante)
Pontos a checar
- ?Sem backend: qualquer chave usada pelo front está no bundle e é legível por qualquer visitante.
Ações
- →Auditar o bundle publicado atrás de tokens de API (Stays, Make, webhooks) e mover para um proxy no servidor.
- →Projeto publicado: revalidar as políticas após cada mudança de schema.
- Forma de acesso
- Aberto ao público (site/página estática)
- Usuários
- A confirmar (provavelmente qualquer visitante)
Pontos a checar
- ?Sem backend: qualquer chave usada pelo front está no bundle e é legível por qualquer visitante.
Ações
- →Auditar o bundle publicado atrás de tokens de API (Stays, Make, webhooks) e mover para um proxy no servidor.