## Что это
`@rox-one/server-core/rate-limit` middleware применяется ко всем WebSocket RPC и REST endpoints. Strategy: sliding window log per (ip, user, endpoint-category). Категории:
- `auth.*` — 5 attempts/min/ip
- `mission.dispatch` — 60/min/user
- `source.read` — 600/min/user
- `share.create` — 10/min/user
- `admin.*` — 30/min/user
При exceed: HTTP 429 с `Retry-After: ` и `RateLimit-Remaining: 0`. На WebSocket — close frame code 4029 + reconnect-delay metadata. Все 429-events в audit с category `security.rate-limit.exceeded`.
Компоненты: `@rox-one/server-core/rate-limit`, in-memory backed (Redis-compatible для multi-instance в будущем). Per-tenant overrides через config.
## Зачем
Without rate-limit публичные endpoints — invitation к DoS, credential-stuffing, abuse. Sliding window — fairer чем fixed-bucket для legitimate burst traffic. Per-category limits позволяют tune auth tighter чем read-heavy paths. OWASP-compliant.
## Источники вдохновения
- [tailscale-dev/tailscale-acl-combiner](https://github.com/tailscale-dev/tailscale-acl-combiner) — ACL composition для rate-policy
- [nextdns/nextdns](https://github.com/nextdns/nextdns) — DoH proxy с per-source rate filtering
- [ethz-spylab/agentdojo](https://github.com/ethz-spylab/agentdojo) — benchmark suite для agent attack defense
## 🔗 Linear
- [PZD-424](https://linear.app/kuhjie/issue/PZD-424) — backing ticket