Cómo bloquear a los spammers para que no utilicen mi API pública de correo electrónico

1

Estoy trabajando en una aplicación web que permite a los usuarios compartir cosas en una página web haciendo clic en el enlace "Enviar por correo electrónico a un amigo". similar a lo que está haciendo extole aquí enlace

en esta página si hace clic en el ícono de correo electrónico cerca de "REFERIR Y OBTENER $ 15", verá una ventana emergente donde puede ingresar su propio correo electrónico y un correo electrónico de amigos y editar el asunto del correo electrónico. Al hacer clic en enviar, los datos se envían al backend como json. Están utilizando una url simple para hacer esto, es decir, enlace .

El problema para mí es que, de alguna manera, los spammers se apoderaron de mi url (no puedo mencionar aquí) y ahora lo están utilizando para enviar spam a otros utilizando algún tipo de script. Lo que hice fue colocar un cheque en la API de backend para bloquear una IP si se originan más de 5 solicitudes de compartir, pero parece que los spammers tienen muchos ips (más de 30,000 de lo que conté en mis registros), así que Todavía son capaces de enviar muchos correos electrónicos. Una posible solución es usar un captcha para frustrar el script de spam. Pero tengo curiosidad por saber cómo lo está haciendo. No están utilizando ningún captchas; y también son famosos, por lo que es poco probable que los spammers no conozcan su api accesible al público. ¿Alguien puede arrojar algo de luz sobre esto?

Nota: 1. Estoy usando un servicio de correo electrónico de terceros para enviar los correos electrónicos. 2. No se requiere que los usuarios inicien sesión, ya que esto anula el propósito de compartir en un sitio web sencillo 3. Los usuarios pueden editar el tema y el cuerpo, por lo tanto, se envían a la llamada de la API y esto es lo que permite a los spammers abusar de la API con sus propias cosas.

    
pregunta taimur 25.01.2015 - 15:09
fuente

2 respuestas

1

Debería reaccionar rápido antes de que su IP / dominio de envío se incluya en la lista negra. Además, todos esos correos electrónicos dañan tu marca.

Algunos primeros pasos:

  • Busque en el registro de su servidor el agente de usuario de los remitentes abusivos. Un simple bot de spam siempre puede usar el mismo, por lo que puede asignar una mayor probabilidad de ser spam a "usuarios" con dichos agentes y limitar el número de "acciones" que pueden invocar. Si tiene suerte, su agente de usuario es único y puede bloquearlo.
  • Puede agregar un campo de formulario oculto que obtiene un valor de su servidor a través de una solicitud de javascript. Debe verificarlo antes de enviarlo (se ha usado antes, se ha generado en los últimos 5 minutos, ...) y esto podría bloquear los robots simples que no representan su página / ejecutan el script. (Sin embargo, esto solo bloquea a los niños de script)
  • ¡Filtra los mensajes enviados! No permitas enlaces a ningún dominio que no estés controlado por ti. Filtre los correos y ponga en la lista negra la IP si contiene características típicas de spam (nombres de productos farmacéuticos, juegos de azar, ...)
  • Los captchas ya no son tan malos o al menos Google afirma eso. Echa un vistazo a su sistema de re: captcha redisgned. No lo he probado todavía, pero si funciona, no es una molestia para el usuario.
respondido por el Rüdiger Voigt 25.01.2015 - 15:34
fuente
2

Esto se conoce comúnmente como un ataque de repetición, cuando el atacante transmite repetidamente un mensaje legítimo utilizando un script. En este caso, hay modificaciones menores al mensaje ya que los spammers cambian los parámetros de correo electrónico en cada mensaje.

Lo que podría hacer para evitar eso es implementar un nonce. Un nonce es una cadena aleatoria que es única para cada solicitud. El nonce debe generarse en el back-end y almacenarse en una base de datos. El nonce se puede incrustar en un campo oculto en el formulario. Cuando se envía el formulario, usted verifica el nonce contra la base de datos. Si es válido, procesa la solicitud y elimina el nonce de la base de datos. Al hacerlo, cualquier solicitud futura de que algún elemento no sea válido no será válida y, por lo tanto, evitará que los spammers reenvíen repetidamente la misma solicitud.

Sin embargo, un robot más sofisticado puede omitir este sistema volviendo a cargar la página para obtener un nuevo código para cada repetición.

Otro método que es más intrusivo es implementar un captcha. Detendrá a la mayoría de los spammers, pero como es habitual, los más determinados teóricamente aún podrán escribir un script para evitar eso también.

    
respondido por el limbenjamin 25.01.2015 - 15:42
fuente

Lea otras preguntas en las etiquetas