Skip to content

security(infra): implement rate limiting with penalty system #12

Merged
lucas-adm merged 2 commits intoNoteHubBR:mainfrom
lucas-adm:security/rate-limit-filter
Jan 5, 2026
Merged

security(infra): implement rate limiting with penalty system #12
lucas-adm merged 2 commits intoNoteHubBR:mainfrom
lucas-adm:security/rate-limit-filter

Conversation

@lucas-adm
Copy link
Copy Markdown
Member

Sumário

Este PR implementa proteção contra ataques DDoS por meio de rate limiting baseado em IP, aumentando a resiliência da aplicação contra requisições excessivas.

Alterações

  • Rate limiting de 60 requisições por minuto por IP;
  • Sistema de penalidade: bloqueio de 5 minutos após 10 violações consecutivas;
  • Extração do IP real do cliente, considerando ambientes com proxies e load balancers;
  • Limpeza automática do cache para prevenção de memory leaks;
  • Exclusão do webhook do Stripe das regras de rate limiting;
  • Logs detalhados para monitoramento e auditoria de violações.

Necessidade

Mitigar ataques de requisição em massa, prevenindo sobrecarga do sistema e garantindo maior estabilidade e disponibilidade do serviço.

Teste manual

  1. Realizar 70 requisições consecutivas, repetindo o processo 3 vezes;
  2. Validar:
    • Aplicação do bloqueio temporário;
    • Funcionamento correto do sistema de penalidades.

Checklist

  • Código segue o padrão do projeto
  • Documentação atualizada
  • Testes adicionados/atualizados

Breaking Changes

  • Nenhuma

- Add RateLimitFilter with Bucket4j for DDoS protection
- Implement 60 requests/minute limit per IP
- Add progressive penalty: 5min block after 10 violations
- Extract real client IP from proxy headers
- Add automatic cache cleanup for memory management
- Exclude Stripe webhook from rate limiting
@lucas-adm lucas-adm merged commit fc48e14 into NoteHubBR:main Jan 5, 2026
1 check passed
@lucas-adm lucas-adm deleted the security/rate-limit-filter branch January 5, 2026 13:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant