1. Rate limiting на аутентификацию

Логин без ограничения попыток — самая частая дыра в маленьких проектах. Достаточно простого token bucket на связку IP+email.

2. Идемпотентность мутирующих запросов

Каждый POST, создающий заказ или платёж, должен принимать Idempotency-Key, иначе повтор запроса из-за таймаута клиента создаст дубликат.

3. Подпись вебхуков

HMAC-подпись тела запроса с секретом, известным только вам и отправителю — обязательна для любых входящих вебхуков от платёжных систем.

4. Явные скоупы JWT

Не кладите в токен больше прав, чем нужно для конкретного клиента. Разделяйте access и refresh токены по времени жизни и хранению.

5. Ограничение размера тела запроса

Без лимита на размер payload любой JSON-эндпоинт — потенциальный вектор DoS.

Безопасность — это не одна большая стена, а много маленьких заборов на пути атакующего.