Estoy pensando en limitar la frecuencia de las solicitudes anónimas basadas en IP, pero para los usuarios con un token de autenticación válido, no puedo decidir si es mejor registrar y limitar la frecuencia de las solicitudes según su ID de usuario o dirección IP.
Opción 1 : 15 solicitudes por minuto por UserId
Opción 2 : 30 solicitudes por minuto por dirección IP
Opción 3 : haz ambas cosas
Si una persona / entidad malintencionada decide ejecutar un ataque de bot contra las API, la mejor opción parece ser limitarlos en función de la dirección IP porque potencialmente pueden tener muchos tokens listos para usuarios con diferentes, por ejemplo, direcciones de correo electrónico (suponiendo que cada usuario se registre con una dirección de correo electrónico única).
Sin embargo, también existe la posibilidad de que un individuo sofisticado pueda cambiar las direcciones IP durante el ataque, pero pase el mismo token de autenticación y abuse del sistema con el mismo UserId.
La tercera opción parece atractiva, pero para mí, significa que cada solicitud de API debe escribirse dos veces en la base de datos (los registros se dividen horizontalmente según UserId y hay otro esquema de partición basado en la dirección IP. Sharding lo hará más fácil para buscar y contar las solicitudes).
¿Existen prácticas recomendadas en cuanto a qué opción (o alguna otra cosa) buscar cuando se limita la tasa de usuarios autenticados? Me gustaría tener una idea general de lo que debo hacer antes de profundizar en escribir toda la lógica de validación.