gohorsejobs/backend/internal/middleware
Tiago Yamamoto 7934afcf0d docs: complete project documentation overhaul
- Add comprehensive root README with badges, architecture diagram, and setup guide
- Update backend README with security middlewares and endpoint documentation
- Update frontend README with design system and page structure
- Update seeder-api README with generated data and credentials
- Add internal module READMEs (middleware, handlers, components)
- Document Clean Architecture layers and request flow
- Add environment variables reference table
2025-12-09 19:36:36 -03:00
..
auth.go first commit 2025-12-09 19:04:48 -03:00
cors.go docs: complete project documentation overhaul 2025-12-09 19:36:36 -03:00
logging.go first commit 2025-12-09 19:04:48 -03:00
middleware_test.go docs: complete project documentation overhaul 2025-12-09 19:36:36 -03:00
rate_limit.go docs: complete project documentation overhaul 2025-12-09 19:36:36 -03:00
README.md docs: complete project documentation overhaul 2025-12-09 19:36:36 -03:00
security_headers.go docs: complete project documentation overhaul 2025-12-09 19:36:36 -03:00

Middleware - Security Layer

Middlewares de segurança aplicados a todas as requisições HTTP.


📦 Middlewares Disponíveis

auth.go - Autenticação JWT

Valida tokens JWT e extrai claims do usuário.

// Uso em rotas protegidas
mux.Handle("/protected", AuthMiddleware(handler))

// Com verificação de role
mux.Handle("/admin", AuthMiddleware(RequireRole("superadmin")(handler)))

Claims extraídas:

  • UserID - ID do usuário
  • Role - Papel (superadmin, companyAdmin, recruiter, jobSeeker)
  • CompanyID - ID da empresa (se aplicável)

cors.go - Cross-Origin Resource Sharing

Configura origens permitidas via variável de ambiente.

CORS_ORIGINS=http://localhost:3000,https://gohorsejobs.com

Headers configurados:

  • Access-Control-Allow-Origin (whitelist)
  • Access-Control-Allow-Methods
  • Access-Control-Allow-Headers
  • Access-Control-Allow-Credentials

rate_limit.go - Rate Limiting

Limita requisições por IP para prevenir abusos.

Configuração padrão:

  • 100 requisições por minuto por IP
  • Retorna 429 Too Many Requests quando excedido

Headers de resposta:

  • Retry-After: 60 (quando limitado)

security_headers.go - Security Headers (OWASP)

Adiciona headers de segurança recomendados pela OWASP.

Header Valor Proteção
X-Frame-Options DENY Clickjacking
X-Content-Type-Options nosniff MIME sniffing
X-XSS-Protection 1; mode=block XSS
Referrer-Policy strict-origin-when-cross-origin Vazamento de referrer
Content-Security-Policy (configurado) Injeção de conteúdo
Permissions-Policy (configurado) APIs perigosas

logging.go - Request Logging

Loga todas as requisições com método, path e duração.


🔗 Ordem de Aplicação

Os middlewares são aplicados na seguinte ordem (de fora para dentro):

  1. Security Headers - Headers de segurança
  2. Rate Limiting - Limitação de taxa
  3. CORS - Cross-origin
  4. Logging - Log de requisições
  5. Auth - Autenticação (quando aplicável)
// Em router.go
handler = CORSMiddleware(handler)
handler = RateLimitMiddleware(100, time.Minute)(handler)
handler = SecurityHeadersMiddleware(handler)