47fac22230
- .claude/CLAUDE.md - .claude/commands/subagentes.md - .claude/rules/INDEX.md - .mcp.json - bash/functions/cybersecurity/analyze_dns.md - bash/functions/cybersecurity/audit_http_headers.md - bash/functions/cybersecurity/audit_ssh_config.md - bash/functions/cybersecurity/check_firewall.md - bash/functions/cybersecurity/detect_suspicious_users.md - bash/functions/cybersecurity/encrypt_file.md - ... Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1.8 KiB
1.8 KiB
name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, tested, tests, test_file_path, file_path
| name | kind | lang | domain | version | purity | signature | description | tags | uses_functions | uses_types | returns | returns_optional | error_type | imports | params | output | tested | tests | test_file_path | file_path | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| rate_limit_middleware | function | go | infra | 1.0.0 | impure | func RateLimitMiddleware(rl *RateLimiter) Middleware | Middleware HTTP que aplica rate limiting por IP del cliente. Extrae IP de X-Forwarded-For, X-Real-IP o RemoteAddr. Responde 429 con headers Retry-After y X-RateLimit-* cuando se supera el limite. |
|
|
|
|
false | error_go_core |
|
|
Middleware que limita por IP del cliente y responde 429 cuando se excede | true |
|
functions/infra/rate_limit_middleware_test.go | functions/infra/rate_limit_middleware.go |
Ejemplo
rl := RateLimiterNew(10, 20)
chain := HTTPMiddlewareChain(
HTTPCORSMiddleware([]string{"*"}, []string{"GET", "POST"}),
RateLimitMiddleware(rl),
HTTPLoggerMiddleware(os.Stderr),
)
http.ListenAndServe(":8080", chain(mux))
Notas
Funcion impura — el middleware producido muta el estado del limiter en cada request. Internamente delega en RateLimiterByKey con un keyFunc que extrae la IP segun cabeceras estandar de proxy. La extraccion de IP confia en X-Forwarded-For: para uso publico real habria que validar contra trusted proxies para evitar spoofing. Para entornos internos (deploy con Traefik/Nginx delante) es seguro.