Evaluación del puntaje de spam para una aplicación de una sola página

2

Estoy desarrollando una aplicación de una sola página con un comportamiento similar al de Google Maps y quiero evitar el spam lo más posible.
Los usuarios pueden registrarse en mi sitio web para obtener acceso a una CLAVE API. Luego, en su sitio web, pueden implementar esta aplicación de página única como esta:

<script src="https://www.mywebsite.com/single_page_app.js?key=THEIR_API_KEY"></script>

(Más algunas líneas de javascript para enlazar la aplicación a un <div> pero eso no es relevante)

Esta aplicación de una sola página será utilizada por los usuarios finales para completar información (opciones, fecha, correo electrónico, nombres ...) a través de un formulario de varios pasos. Cada usuario final tiene una sesión (las cookies se utilizan con la solicitud de CORS) y se envía un token a la aplicación para evitar CSRF. Al final de cada paso, los datos recopilados se envían a mi servidor con el token y se guardan en mi base de datos.

¿Cómo puedo evaluar si los datos enviados a mi servidor son spam?

Tengo algunas ideas (obvias) que son:

  • Valide los datos enviados
  • Analice el tiempo entre los pasos y el tiempo total empleado
  • Cuente el número de solicitudes por IP
  • Busque la solicitud con los mismos datos exactos (hash md5)
  • Busque el encabezado de origen y referencia (CSRF, en realidad no es spam)

¿Hay algo más que pueda hacer?

Además, algunas verificaciones (como el número de solicitudes por IP o los datos duplicados) pueden consumir tiempo, ya que tengo que revisar mi base de datos.
¿Deben realizarse estas verificaciones mediante un proceso CRON después de insertarlo en la base de datos o sobre la marcha antes de insertarlos en mi base de datos?

¿Qué debo hacer con los datos de SPAM?

Los datos de SPAM pueden ser útiles para detectar futuros spam, ¿debo eliminarlos o guardarlos en algún lugar? ¿Por cuánto tiempo?

    
pregunta Gary Olsson 08.06.2017 - 12:13
fuente

1 respuesta

1

¿Qué pasa con tu base de datos? Piense desde la perspectiva de un atacante y busque formas de abusar del sistema.

Hay tres métodos que puede utilizar un formulario / API para enviar correo basura:

  1. Los datos enviados se muestran en un sitio web
  2. Los datos enviados se envían por correo electrónico (generalmente a un conjunto pequeño y fijo de personas)
  3. Existe una vulnerabilidad en la implementación que puede ser explotada para usar su sitio para retransmitir el spam de otra manera (¡revise su código! este método no se describe aquí de otra manera)

Si los datos se muestran en un sitio web (o si un atacante hace esa suposición), es probable que vea comentario spam aspirando a:

  1. Realice optimización de motores de búsqueda
  2. Difundir malware (por enlace y / o adjunto)
  3. Daña la credibilidad de tu sitio o de otra manera proporciona ruido
  4. Troll usted o los usuarios de su sitio
  5. Difunda noticias falsas u otra propaganda (esencialmente # 4 y # 1)

Puede combatir el formulario → correo electrónico no deseado y correo electrónico de comentarios de la siguiente forma:

  • Utilice listas negras como DNSBLs de URI para combatir el enlace de spam
  • (solo en la Web) Represente enlaces con nofollow , como <a href="…" rel="nofollow">this</a>
  • No permitir adjuntar archivos que no sean de medios
  • Límite de frecuencia: "Demasiados envíos de esta IP, inténtalo de nuevo más tarde"
  • Limitar los privilegios para los recién llegados, por ejemplo,
    • "No puedes adjuntar archivos hasta que ..."
    • "No puede proporcionar enlaces hasta que ...", luego use nofollow, luego permita completamente
    • "No puedes publicar imágenes hasta que ..."
    • "No puedes publicar más de una vez por hora hasta que ..."
  • Haga que un equipo de moderación revise cada publicación antes de que se haga pública.
    • (solo en la web) Considere un sistema de moderación de usuarios como Discurso
  • Cree un algoritmo de aprendizaje automático para automatizar el equipo de moderación humana
  • Implemente un captcha (y haga que sea más difícil para los recién llegados que para los usuarios normales)

El "éxito" menos visible es para un atacante, los ataques menos persistentes (aunque a algunos atacantes no les importa). Incluso afirmar tener una revisión de moderador, pero simplemente retrasar las publicaciones de un nuevo usuario unas pocas horas puede frustrar un poco de spam.

Si está enviando un correo electrónico, puede usar uno de los muchos sistemas Bayesianos internamente para ver si desea cancelar el envío desde su base de datos y / o desde empujar externamente. (Tendráqueentrenarregularmenteestesistema.)Tambiénpuedeusarun Proveedor de servicios de correo electrónico (ESP) para manejar su reputación de salida para usted.

Puede reportar imágenes de spam a Knujon ("No Junk" deletreado al revés) en su carga de archivos de solo imagen . Puede informar de los sitios de aterrizaje de phishing a PhishTank .

    
respondido por el Adam Katz 04.12.2017 - 22:05
fuente

Lea otras preguntas en las etiquetas