Hola a todos, tengo un sitio web de alojamiento de imágenes y estoy diseñando una API para ello. Mi preocupación es que no quiero que nadie sea capaz de hacer algo como:¿Cómo protegería una API del abuso?
while(true) {
Upload();
}
y spam/DoS al sitio.
Mi solución actual es limitar todas las direcciones IP a una cierta cantidad de cargas por día/hora. Creo que esto funcionará bien para las aplicaciones de escritorio que usarán la API, pero para los sitios web que deseen usarla, todos los usuarios tendrán la misma IP (del servidor).
Supongo que la mejor solución sería tener cuentas de usuario que se autentiquen con la API, y luego prohibir cada cuenta si abusan de ella. El problema con esto es que mi sitio no tiene ninguna cuenta de usuario, es completamente anónimo.
¿Qué más se puede hacer? Me gustaría mantener las cosas lo más abiertas posible, y al mismo tiempo tener la capacidad de prohibir usuarios/IP que obviamente están abusando del servicio.
¿Quizás sus sitios colaboradores de terceros puedan decorar la solicitud con IP original, como X_FORWARDED_FOR encabezado HTTP? –
¿Quizás las características anti-DoS están incorporadas en (el servidor web) (configurable) y, por lo tanto, no es necesario que estén en la aplicación web? – ChrisW
ChrisW: No, DoS puede ocurrir en múltiples niveles de una aplicación; por ejemplo, bloquear todas las cuentas de usuario, etc. Necesita ser atendida en este nivel. –