¿Cómo evitar el spam del servicio web?

3

¿Cómo puedo evitar que los usuarios envíen correo no deseado a mi servicio web enviando miles de solicitudes?

Mi servicio web está realmente protegido por un token de validación al que solo se puede acceder a través de la autenticación, pero aún así no puedo evitar el hecho de que mi servicio web verificará si el token existe en mi base de datos.

Pensé en guardar la cantidad de intentos por IP, pero aún así, tendría que verificar cada vez en mi base de datos si la IP que está intentando está en la lista negra.

¿Hay alguna forma de evitar los spammers de servicios web?

    
pregunta Fortune 08.07.2015 - 16:25
fuente

4 respuestas

1

Fail2ban es una buena opción, pero creará algunos problemas si una parte importante de su base de usuarios está detrás de un proxy, y alguien en ese proxy abusa de su servicio y bloquea a todos los usuarios del proxy.

Probablemente tenga una base de datos tradicional (MySQL, Postgres, Oracle, DB2) que hospeda sus datos, pero la sobrecarga de los tokens es demasiado alta para ellos.

Podría usar una pequeña base de datos NoSQL solo para los tokens, y dejar que la base de datos principal se encargue de los datos. Redis es una buena opción, y CouchBase es otra buena uno. Se sabe que Couchbase es muy rápido, así que primero lo intentaría. Por otro lado, Redis parece más fácil de integrar.

    
respondido por el ThoriumBR 08.07.2015 - 17:05
fuente
1

No puede evitar el costo de una búsqueda: en un punto, tendrá que realizar uno solo para ver si el remitente está en la lista negra o no.

Por lo tanto, tu mejor opción es probablemente asegurarte de que una búsqueda de token sea lo suficientemente rápida para manejar la carga.

Sin embargo, aún debe mantener un rastreo en su base de datos de intentos no válidos con una fuente asociada. Tal seguimiento debería facilitar la verificación de si una IP específica tiene un número de fallas mayor que el aceptable recientemente. Verifique esto primero para limitar al mínimo la adivinación de tokens.

    
respondido por el Stephane 08.07.2015 - 17:13
fuente
1

Si al generar la página, agrega un token de hash basado en la marca de tiempo más un secreto, al incluir la marca de tiempo y el token en cada solicitud puede hacer que sea más difícil crear ataques. El token se puede verificar sin recurrir a la base de datos. Cualquier solicitud con una marca de tiempo que sea demasiado antigua también debe ser rechazada.

Si se trata de una aplicación de una página o similar donde la página no se actualiza por completo con frecuencia, en su servicio web puede devolver un nuevo token de hash y una marca de tiempo en la respuesta a cualquier solicitud autenticada.

    
respondido por el Alfred Armstrong 08.07.2015 - 17:25
fuente
0

Puede intentar usar fail2ban o un software similar e implementar un " límite de solicitud ".

Se basará en la dirección IP, pero no será necesario que compruebe su base de datos para cada solicitud.

Además, cuando una IP se incluirá en la lista negra, ya no llegará a su servicio web, ya que el firewall bloqueará la solicitud entrante antes.

    
respondido por el r00t 08.07.2015 - 16:37
fuente

Lea otras preguntas en las etiquetas