1. Rate limiting на аутентификацию
Логин без ограничения попыток — самая частая дыра в маленьких проектах. Достаточно простого token bucket на связку IP+email.
2. Идемпотентность мутирующих запросов
Каждый POST, создающий заказ или платёж, должен принимать Idempotency-Key, иначе повтор запроса из-за таймаута клиента создаст дубликат.
3. Подпись вебхуков
HMAC-подпись тела запроса с секретом, известным только вам и отправителю — обязательна для любых входящих вебхуков от платёжных систем.
4. Явные скоупы JWT
Не кладите в токен больше прав, чем нужно для конкретного клиента. Разделяйте access и refresh токены по времени жизни и хранению.
5. Ограничение размера тела запроса
Без лимита на размер payload любой JSON-эндпоинт — потенциальный вектор DoS.
Безопасность — это не одна большая стена, а много маленьких заборов на пути атакующего.
