advanced

Rate limiting и audit logs

Ограничивайте abusive или expensive actions через identity-aware quotas и сохраняйте tamper-resistant audit trails для sensitive security events.

Rate limiting сдерживает abuse, credential stuffing и дорогие endpoints. Ключ по user ID, API key, IP (с учётом proxy) или tenant. Token bucket или sliding window; 429 с `Retry-After`.

					import { RateLimiterRedis } from 'rate-limiter-flexible';

const limiter = new RateLimiterRedis({
  storeClient: redis,
  keyPrefix: 'rl_login',
  points: 5,
  duration: 60,
});

try {
  await limiter.consume(req.ip);
} catch {
  return res.status(429).json({ error: 'too_many_requests' });
}
				

Audit logs фиксируют security-sensitive события: login success/failure, смена permissions, export данных, admin actions. Append-only, синхронизированные часы, actor + target + outcome, без секретов в payload.

На интервью: distributed rate limiting с Redis; per-route vs global; retention audit и GDPR.

Типовые ошибки: только IP за carrier NAT; логирование паролей при failed login; изменяемые audit tables без integrity.

Компромисс — между простотой, производительностью, безопасностью и эксплуатацией: назовите, что оптимизировали и какую цену приняли.

Чеклист:

  • Identity-aware limits на auth и costly routes.
  • Structured audit events с correlation IDs.
  • Tamper-evident/WORM storage для compliance.
  • Алерты на аномалии (burst failures, mass export).