2.9 KiB
2.9 KiB
Melhorias de Segurança Implementadas
1. Proteção de Informações Sensíveis
- Variáveis de Ambiente: Removidas credenciais expostas do arquivo
.enve substituídas por valores genéricos. - Gitignore: Atualizado para garantir que arquivos
.envnão sejam acidentalmente versionados. - Exemplo de ENV: Criado arquivo
.env.examplecomo modelo sem credenciais reais para ser versionado.
2. Proteção Contra Ataques de Força Bruta
- Rate Limiting: Implementado middleware
RateLimiterMiddlewarepara 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_TTLeTHROTTLE_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
IsSanitizedeIsSecureIdpara validação rigorosa de entradas. - Middleware de Sanitização: Implementado
RequestSanitizerMiddlewarepara 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
ValidationPipecom opções mais rigorosas no arquivomain.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:
import { IsSanitized, IsSecureId } from '../common/validators/sanitize.validator';
export class ExampleDto {
@IsSecureId()
id: string;
@IsSanitized()
@IsString()
content: string;
}
Próximos Passos Recomendados
- Implementar auditoria de segurança regular
- Configurar autenticação de dois fatores
- Realizar análise estática de código para buscar vulnerabilidades adicionais
- Implementar verificação de força de senha
- Adicionar proteção contra CSRF para operações sensíveis