Para reportar uma vulnerabilidade de segurança, envie um e-mail diretamente ao administrador do sistema (não abra uma Issue pública) ou use a funcionalidade "Security Advisories" do GitHub (aba Security > Advisories).
O arquivo dados/clientes.json armazena dados pessoais dos participantes do :
- Nome completo
- Data de nascimento
- Número de celular
- Histórico de pontos e resgates
Este arquivo está acessível publicamente por estar em um repositório GitHub Pages. Isso representa um risco de conformidade com a LGPD (Lei nº 13.709/2018).
-
Repositório Privado: Migrar o repositório para privado no GitHub. O GitHub Pages suporta repositórios privados em planos pagos. Isso impede o acesso público direto ao JSON.
-
Acesso via API com Token Restrito: O sistema já utiliza um token GitHub com escopo limitado (
contents: write) para salvar dados. Garantir que o token de produção nunca seja exposto no frontend. -
Minimização de Dados: Avaliar quais campos são estritamente necessários e remover informações desnecessárias (ex.:
historico_alteracoescompleto pode ser resumido).
Migrar o armazenamento de clientes para um backend dedicado com:
- Cloudflare Workers + KV (gratuito no plano básico): substitui o GitHub API como backend.
- Supabase (banco Postgres gerenciado, tier gratuito): autenticação, RLS e API REST prontos.
- Firebase Firestore: alternativa Google com regras de segurança por usuário.
Qualquer uma dessas opções elimina a exposição de PII em repositório público e simplifica a gestão de permissões.
| Arquivo | Conteúdo | Exposição | Risco |
|---|---|---|---|
dados/clientes.json |
PII (nome, cel, nasc.) | Público (GitHub Pages) | Alto |
dados/encomendas.json |
Pedidos + telefone | Público | Alto |
dados/config.json |
Configurações do site | Público | Baixo (sem senhas em texto claro) |
dados/fidelidade*.json |
Códigos de pontos | Público | Médio |
- ✅ HTTPS com HSTS (
max-age=31536000; includeSubDomains) - ✅
Content-Security-Policyrestritiva (semunsafe-eval) - ✅
X-Frame-Options: SAMEORIGIN - ✅
X-Content-Type-Options: nosniff - ✅
Referrer-Policy: strict-origin-when-cross-origin - ✅ Google Consent Mode v2 (analytics negado por padrão)
- ✅ Banner de cookies com opt-in
- ✅ Política de Privacidade publicada (
/politica-privacidade.html) - ✅ Admin (
/admin-painel.html) comnoindex, nofolloweno-store - ✅
robots.txtbloqueia acesso de crawlers ao admin - ✅ Inputs de formulário sanitizados via
textContent(seminnerHTMLcom dados externos)