Files
fn_registry/functions/infra/rate_limit_middleware.md
egutierrez 47fac22230 chore: auto-commit (799 archivos)
- .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>
2026-05-14 00:28:20 +02:00

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.
rate_limit
http
middleware
ip
server
infra
pendiente-usar
rate_limiter_by_key_go_infra
RateLimiter_go_infra
Middleware_go_infra
Middleware_go_infra
false error_go_core
net
net/http
strings
name desc
rl puntero al RateLimiter compartido entre todos los requests
Middleware que limita por IP del cliente y responde 429 cuando se excede true
permite request bajo el limite
responde 429 cuando se excede el limite
IPs distintas tienen buckets independientes
X-Forwarded-For tiene prioridad sobre RemoteAddr
responde con Retry-After header en 429
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.