Humano o Bot: Detrás de los controles de escena vs CAPTCHA

4

Estoy trabajando en una aplicación web en el momento en el que estamos tratando de eliminar cualquier fricción y exceso de usuarios de nuestra página de creación de usuarios. Para evitar que los robots informáticos envíen spam a nuestra aplicación, necesitamos tener algún tipo de CAPTCHA, pero esto eliminaría la idea principal detrás de la aplicación, que es la simplicidad.

Al mirar a través de las sugerencias de alternativas aquí en Stack Exchange, todos parecen quitarle el UX y dejar espacio para que trabajen los robots. Sugerencias aquí:

Esto me hizo pensar, ¿por qué no podemos detectar si un usuario es real o un bot que usa una serie de métodos anti-bot detrás de la escena como honeypots, sellos de tiempo, solicitudes POST y GET deshonestas, si JavaScript es habilitado, verificando el encabezado HTTP y otros.

¿Hay alguna razón técnica por la que esto no se haya hecho? Pensando en escribir una biblioteca yo mismo de otra manera :).

    
pregunta LogiKal 27.08.2014 - 23:02
fuente

2 respuestas

2

CAPTCHA no son necesariamente necesarios ni son la única solución. Defensa en profundidad significa usar múltiples tácticas, capas y técnicas. Si tiene información, puede intentar determinar la probabilidad de que el cliente que habla con su aplicación web sea (A) un humano y (B) un humano al que desea acceder a su sitio.

Existen servicios de reputación que pueden proporcionar listas negras basadas en informes o clientes pares, sus proveedores de red ascendente o proveedores de CDN también pueden ofrecer dichos servicios. Puede elegir bloquear el acceso a ciertos rangos erróneos conocidos, países de origen incorrectos o improbables, etc.

Puede ajustar su respuesta según el riesgo, el costo, etc. También puede ajustar manualmente sus métricas a lo largo del tiempo dependiendo del número esperado de clientes en comparación con los clientes que no se registran, repiten las direcciones IP, realizan el seguimiento de los códigos de invitación por correo electrónico, etc.

Hace un tiempo vi una buena presentación en " Repsheet " donde el presentador habló de todos el análisis de comportamiento y los puntos de datos que usa su compañía para identificar posibles estafadores y cómo utilizaron múltiples técnicas para enfrentarlo. Las diapositivas eran más acompañantes que independientes, pero aún así debería poder seguir las técnicas. Algunos componentes del sistema están disponibles en repsheet github repo .

    
respondido por el Eric G 28.08.2014 - 04:11
fuente
1

La respuesta general es: puedes distinguir entre humanos y robots de spam según la voluntad de los desarrolladores de spambot de atacarte específicamente. Hay dos categorías de defensas esencialmente: distinción bot / humano y métodos para aumentar El coste de realizar ataques.

Distinguiendo bots de humanos

Ya se han propuesto muchas técnicas alternativas a CAPTCHA en la primera familia en Stack Exchange: ¿Existe una verdadera alternativa al uso de imágenes CAPTCHA?

No discutiré CUPTCHUs y CIPTCHIs y otros CAPTCHA "utilizables". Todos requieren que los humanos realicen una tarea para discriminarlos contra los robots. La mayoría de ellos probablemente se pueden romper si un adversario los ataca específicamente, y todos aún requieren perder el tiempo de su usuario: uno de ellos al menos se preocupa por la UX y es tolerable en algunos contextos de uso donde la diversión es un buen valor para la experiencia que estás creando.

Aumentar el costo de los ataques

Mi favorito personal es simplemente usar esquemas de identidad federados para que confíes en otros proveedores de identidad para confirmar si una IP específica tiene una cuenta con ellos (OAuth lo hace) y que esta cuenta tiene una cantidad significativa de valor ( para una cuenta de correo electrónico, ha recibido cantidades sustanciales de correo de otras cuentas que se supone que son reales *), nadie lo ha hecho todavía, que yo sepa.

Tenga en cuenta que este enfoque no ofrece protección contra dispositivos infectados en lugar de spambots, algo que es una preocupación creciente para sitios como Facebook donde se abusan de algunas cuentas reales y de confianza debido a extensiones de navegador maliciosas y comienzan a servir spam (sin URL, eso es rumores académicos).

Puede ser bueno tomar otros métodos, si tiene datos empíricos que demuestren que funciona para quienquiera que lo ataque. Puede reducir el número de cuentas creadas por IP por ej. semana / mes antes de servir un CAPTCHA si te enfrentas a robots de spam que reutilizan las mismas IP de botnets para crear cuentas en lugar de cambiar sistemáticamente. Puede hacer un aprendizaje automático de los detalles de los spambots existentes (forma del apodo, detalles rellenados) para identificar a un delincuente recurrente y usarlo como un filtro adicional para decidir si desea CAPTCHA o no. Por supuesto, eso requiere mucho de mantenimiento y solo funciona contra adversarios desmotivados, por lo que si eres una plataforma de millones de usuarios probablemente no tengas suerte. Los adversarios activos derrotan de manera trivial estos casos de aprendizaje automático (consulte las conferencias de AISec).

Los CAPTCHA son un no, en cualquier caso

Si cree que los CAPTCHA son absolutamente necesarios para algunos casos, aún debe implementar otros métodos para detectar a los delincuentes y solo atender a los CAPTCHA cuando tenga dudas sobre una cuenta. Es mucho más probable que un usuario real obtenga un CAPTCHA que un Spambot que tenga éxito en 4 o 5 controles diferentes.

* confiar en cadenas de confianza se abre a los ataques de sybil, pero me parecen mucho más fáciles de defender (SybilGuard y cualquier otra cosa que se haya publicado desde entonces) que p. ej. Detección directa automática de comentarios / revisiones y mucho más agradable para el usuario que el uso de CAPTCHAs (con hasta un 40% de tasas de error según la investigadora de usabilidad Angela Sasse).

    
respondido por el Steve DL 28.08.2014 - 00:19
fuente

Lea otras preguntas en las etiquetas