diff --git a/SEGURANCA.md b/SEGURANCA.md new file mode 100644 index 0000000..596be89 --- /dev/null +++ b/SEGURANCA.md @@ -0,0 +1,33 @@ +# 🛡️ Política & Arquitetura de Segurança de Dados - MicrotecFlix + +Este documento detalha o armazenamento de credenciais, tokenização PCI-DSS, proteção de APIs e arquitetura de segurança da plataforma **MicrotecFlix**. + +--- + +## 1. Armazenamento da API Key do Asaas + +- **Localização:** Exclusivamente no banco de dados do servidor (`db.settings.asaasApiKey` / PostgreSQL em produção). +- **Proteção Frontend:** A API Key do Asaas **NUNCA** é trafegada ou enviada ao navegador do aluno. +- **Acesso Restrito:** A leitura e atualização da chave ocorrem apenas através da rota autenticada `POST /api/admin/settings`, exigindo Token JWT válido e papel de Administrador (`role === 'admin'`). +- **Comunicação Criptografada:** Toda requisição à API do Asaas ocorre de Servidor-para-Servidor (*Server-to-Server*) utilizando rotas HTTPS criptografadas com **TLS 1.3**. + +--- + +## 2. Nível de Segurança & Proteção de Dados (PCI-DSS & LGPD) + +| Camada de Segurança | Tecnologia / Mecanismo | Nível de Proteção | Descrição Técnica | +| :--- | :--- | :--- | :--- | +| **Tokenização de Cartões (PCI-DSS)** | API `/creditCard/tokenize` (Asaas) | **Máximo** | Número completo do cartão, código CVV e validade **NUNCA são gravados no banco de dados**. Salva-se apenas o `creditCardToken` e os últimos 4 dígitos (`•••• 4321`). | +| **Criptografia em Trânsito** | HTTPS / TLS 1.3 (Traefik + Let's Encrypt) | **Alto** | 100% do tráfego entre navegador, painel admin e APIs é criptografado com SSL/TLS de ponta a ponta. | +| **Isolamento de Banco de Dados** | Docker Container (`postgres-microtecflix`) | **Alto** | Instância PostgreSQL dedicada rodando na porta interna `5435`, isolada do ambiente host e acessível apenas pelos containers da rede Swarm. | +| **Segurança do Webhook** | Token `asaas-token` no Header | **Alto** | Notificações de pagamento enviadas ao endpoint `/api/webhooks/asaas` sem o token configurado são rejeitadas imediatamente com **HTTP 401 Unauthorized**. | +| **Proteção Anti-Carding** | Middleware Rate Limiting | **Alto** | Limita o número de tentativas de pagamento por IP no checkout para evitar testes automatizados por bots. | +| **Proteção Anti-Crash (DOM)** | React `ErrorBoundary` + Encapsulamento `` | **Alto** | Previne travamentos de tela branca causados por extensões do navegador ou tradução automática do Google Chrome. | + +--- + +## 3. Conformidade e Boas Práticas + +1. **Senhas de Usuários:** Armazenadas utilizando algoritmo de hash seguro `bcrypt` com salt. +2. **Sessões de Usuário:** Autenticação via JSON Web Token (JWT) assinado com segredo forte e expiração de 7 dias. +3. **Controle de Acesso (RBAC):** Separação estrita entre rotas de Aluno (`/api/...`) e Administrador (`/api/admin/...`). diff --git a/gemini.md b/gemini.md index 030399c..4c2e6e9 100644 --- a/gemini.md +++ b/gemini.md @@ -108,3 +108,18 @@ Passos executados: 4. `git add .` 5. `git commit -m "Configuracao completa MicrotecFlix para deploy no Docker Swarm via Portainer"` 6. `git push -u origin main` + +--- + +## 6. Arquitetura & Segurança de Dados (PCI-DSS & LGPD) + +| Camada de Segurança | Tecnologia / Mecanismo | Nível de Proteção | Descrição Técnica | +| :--- | :--- | :--- | :--- | +| **Tokenização de Cartões (PCI-DSS)** | API `/creditCard/tokenize` (Asaas) | **Máximo** | Número completo do cartão, código CVV e validade **NUNCA são gravados no banco de dados**. Salva-se apenas o `creditCardToken` e os últimos 4 dígitos (`•••• 4321`). | +| **Armazenamento da API Key** | Banco de dados isolado no Servidor | **Alto** | Chave do Asaas mantida no backend e **nunca exposta ao navegador do aluno**. Acesso restrito a rotas protegidas por JWT Admin. | +| **Criptografia em Trânsito** | HTTPS / TLS 1.3 (Traefik + Let's Encrypt) | **Alto** | 100% do tráfego entre navegador, painel admin e APIs é criptografado com SSL/TLS de ponta a ponta. | +| **Isolamento de Banco de Dados** | Docker Container (`postgres-microtecflix`) | **Alto** | Instância PostgreSQL dedicada rodando na porta interna `5435`, isolada do ambiente host e acessível apenas pelos containers da rede Swarm. | +| **Segurança do Webhook** | Token `asaas-token` no Header | **Alto** | Notificações de pagamento sem o token configurado são rejeitadas imediatamente com **HTTP 401 Unauthorized**. | +| **Proteção Anti-Carding** | Middleware Rate Limiting | **Alto** | Limita o número de tentativas de pagamento por IP no checkout para evitar testes automatizados por bots. | +| **Proteção Anti-Crash (DOM)** | React `ErrorBoundary` + Encapsulamento `` | **Alto** | Previne travamentos de tela branca causados por extensões do navegador ou tradução automática do Google Chrome. | +