59 lines
2.9 KiB
Markdown
59 lines
2.9 KiB
Markdown
# Melhorias de Segurança Implementadas
|
|
|
|
## 1. Proteção de Informações Sensíveis
|
|
|
|
- **Variáveis de Ambiente**: Removidas credenciais expostas do arquivo `.env` e substituídas por valores genéricos.
|
|
- **Gitignore**: Atualizado para garantir que arquivos `.env` não sejam acidentalmente versionados.
|
|
- **Exemplo de ENV**: Criado arquivo `.env.example` como modelo sem credenciais reais para ser versionado.
|
|
|
|
## 2. Proteção Contra Ataques de Força Bruta
|
|
|
|
- **Rate Limiting**: Implementado middleware `RateLimiterMiddleware` para limitar o número de requisições por IP e rota.
|
|
- **Throttler Integrado**: Configurado corretamente o ThrottlerModule do NestJS para rate limiting baseado em rotas.
|
|
- **Headers de Rate Limit**: Adicionados cabeçalhos HTTP para informar o cliente sobre limites de requisição.
|
|
- **Configuração Flexível**: Os limites de rate limiting são configuráveis via variáveis de ambiente (`THROTTLE_TTL` e `THROTTLE_LIMIT`).
|
|
- **Aplicação Seletiva**: Aplicado principalmente em rotas sensíveis como autenticação e usuários.
|
|
|
|
## 3. Validação e Sanitização de Dados
|
|
|
|
- **Validadores Personalizados**: Criados decorators `IsSanitized` e `IsSecureId` para validação rigorosa de entradas.
|
|
- **Middleware de Sanitização**: Implementado `RequestSanitizerMiddleware` para limpar automaticamente todos os dados de entrada.
|
|
- **Proteção Contra Injeções**: Adicionadas verificações contra SQL Injection, NoSQL Injection e XSS.
|
|
- **Validação Global**: Configuração de `ValidationPipe` com opções mais rigorosas no arquivo `main.ts`.
|
|
|
|
## 4. Cabeçalhos HTTP Seguros
|
|
|
|
- **Helmet**: Adicionado o middleware Helmet para configurar cabeçalhos HTTP seguros.
|
|
- **CORS Restritivo**: Configuração mais rigorosa para CORS, limitando origens em produção.
|
|
- **Headers de Segurança**: Adicionados headers para proteção contra XSS, clickjacking e sniffing.
|
|
|
|
## 5. Recomendações Adicionais
|
|
|
|
- **Ambiente de Produção**: A configuração de segurança diferencia entre desenvolvimento e produção.
|
|
- **Mensagens de Erro**: Desativação de mensagens de erro detalhadas em produção para evitar vazamento de informações.
|
|
- **Autenticação**: Configuração de tempo de expiração do JWT mais adequada para balancear segurança e experiência.
|
|
|
|
## Como Usar
|
|
|
|
Os novos recursos de segurança são aplicados automaticamente na aplicação. Para utilizar os validadores personalizados em DTOs, importe-os assim:
|
|
|
|
```typescript
|
|
import { IsSanitized, IsSecureId } from '../common/validators/sanitize.validator';
|
|
|
|
export class ExampleDto {
|
|
@IsSecureId()
|
|
id: string;
|
|
|
|
@IsSanitized()
|
|
@IsString()
|
|
content: string;
|
|
}
|
|
```
|
|
|
|
## Próximos Passos Recomendados
|
|
|
|
1. Implementar auditoria de segurança regular
|
|
2. Configurar autenticação de dois fatores
|
|
3. Realizar análise estática de código para buscar vulnerabilidades adicionais
|
|
4. Implementar verificação de força de senha
|
|
5. Adicionar proteção contra CSRF para operações sensíveis |