Mi primer intento para resolver la vulnerabilidad DoS utilizó el enfoque sugerido por Gulzar, que es básicamente limitar el número de llamadas permitidas desde la misma dirección IP. Creo que es un buen enfoque, pero, desafortunadamente, causó que mi código fallara una prueba de rendimiento.
Como no pude hacer que el grupo de prueba de rendimiento cambiara su prueba (un problema político, no técnico), cambié para limitar el número de llamadas permitidas durante un intervalo configurable. Hice la cantidad máxima de llamadas y el intervalo de tiempo configurable. También permití establecer un valor de 0 o un número negativo que deshabilita los límites.
El código que debe protegerse es utilizado internamente por varios productos. Por lo tanto, hice que cada grupo de productos ejecutara sus series de QA y pruebas de rendimiento, y se obtuvieron los valores predeterminados que eran lo más pequeños posibles para limitar un verdadero ataque DoS, pero que aún pasaron todas las pruebas.
FWIW, el intervalo de tiempo fue 30 segundos y el número máximo de llamadas fue 100. Esto no es un enfoque completamente satisfactorio, pero es simple y práctico y fue aprobado por el equipo de seguridad corporativo (otra consideración política).
Los productos que usan mi biblioteca tienen que funcionar en Windows y AIX además de Linux. –