# 🔒 Checklist de Segurança - Codex SaaS

## PRÉ-IMPLANTAÇÃO

### Configuração de Ambiente
- [ ] `.env` não está versionado (verifique `.gitignore`)
- [ ] Variáveis sensíveis NÃO estão em código-fonte
- [ ] `APP_KEY` alterada para valor seguro e aleatório
- [ ] `CSRF_TOKEN_SECRET` alterada para valor único
- [ ] `DB_PASS` é senha forte (min 12 caracteres, símbolos)
- [ ] `APP_ENV` configurado como `production` em servidor

### Dependências
- [ ] Composer instalado
- [ ] `composer install --no-dev` executado
- [ ] Nenhuma dependência dev em produção
- [ ] Autoloader otimizado (`--optimize-autoloader`)

### Banco de Dados
- [ ] Usuário banco de dados com privilégios limitados
- [ ] Senha do banco de dados forte
- [ ] Backups automatizados configurados
- [ ] Conexão via SSL (se possível)

### Servidor Web

#### Apache
- [ ] `mod_rewrite` habilitado
- [ ] `.htaccess` presente em `public/`
- [ ] Headers de segurança configurados
- [ ] Diretório raiz apontado para `public/`

#### Nginx
- [ ] Configuração SSL correta
- [ ] TLS 1.2+ obrigatório
- [ ] HSTS header configurado
- [ ] Gzip compressão ativada

### Segurança de Arquivo
- [ ] `.env` com permissão `600` (apenas proprietário)
- [ ] `composer.json` e `.php` não acessíveis via web
- [ ] Diretório `app/` não acessível via web
- [ ] Diretório `config/` não acessível via web
- [ ] Diretório `database/` não acessível via web
- [ ] Diretório `storage/` fora do root público

### SSL/HTTPS
- [ ] Certificado SSL válido instalado
- [ ] Redirecionar HTTP → HTTPS
- [ ] HSTS header configurado por 6+ meses
- [ ] Domínio usando HTTPS obrigatoriamente

### Permissões de Pasta
```bash
# Webroot
chmod 755 public/

# Storage
chmod 755 storage/
chmod 755 storage/logs/
chmod 755 storage/uploads/

# Config (sem escrita)
chmod 755 app/
chmod 755 config/
chmod 755 routes/

# Propriedade
chown -R www-data:www-data /var/www/codex
```

---

## PÓS-IMPLANTAÇÃO

### Testes Iniciais
- [ ] Acessar `/diagnose.php` - tudo OK ✓
- [ ] Acessar `/health-check.php` - healthy
- [ ] Fazer login funciona
- [ ] Logout funciona
- [ ] CSRF token validado

### Monitoramento
- [ ] Health check monitora a cada 5 minutos
- [ ] Logs salvos em `storage/logs/`
- [ ] Alertas configurados para falhas críticas
- [ ] Backup automático do banco configurado

### Logs
- [ ] `storage/logs/` existe e é gravável
- [ ] Logs rotativos configurados
- [ ] Log de erros separado do access log
- [ ] Logs não accessíveis publicamente

### Performance
- [ ] Cache de navegador configurado
- [ ] Gzip compressão ativada
- [ ] Autoloader Composer otimizado
- [ ] CDN configurado para assets estáticos (opcional)

### Backup e Recuperação
- [ ] Backups diários automáticos
- [ ] Backup do `.env` seguro
- [ ] Teste de recuperação realizado
- [ ] Plano de disaster recovery documentado

---

## MONITORAMENTO CONTÍNUO

### Segurança
- [ ] Verificar logs de erro diariamente
- [ ] Atualizar dependências mensalmente (`composer update`)
- [ ] Verificar atualizações de segurança do PHP
- [ ] Fazer scan de vulnerabilidades (`composer audit`)

### Performance
- [ ] Monitorar tempo de resposta
- [ ] Verificar uso de memória
- [ ] Verificar uso de CPU
- [ ] Monitorar espaço em disco

### Disponibilidade
- [ ] Uptime monitoring ativo
- [ ] Alertas por SMS/Email
- [ ] SLA definido (99.9%, 99.95%, etc)

---

## ENDPOINTS DE MONITORAMENTO

### Diagnóstico (Desenvolvimento)
```
GET /diagnose.php
```
Retorna status detalhado de todos os componentes

### Health Check (Produção)
```
GET /health-check.php
```
Retorna JSON com status de saúde da aplicação

---

## REFERÊNCIAS DE SEGURANÇA

- [OWASP Top 10](https://owasp.org/www-project-top-ten/)
- [PHP Security Best Practices](https://www.php.net/manual/en/security.php)
- [Let's Encrypt SSL](https://letsencrypt.org/)
- [Composer Security](https://getcomposer.org/doc/07-security.html)

---

## CONTATOS E SUPORTE

Dúvidas sobre segurança?
- Consulte o documentação oficial
- Revise o arquivo DEPLOYMENT_INSTRUCTIONS.md
- Monitore os logs regularmente
