En la web actual, el usuario se ha convertido en el centro de todo: tener más comunidad, más compradores, más usuarios... se convierte, en definitiva, tener más negocio y muchas estrategias de marketing premian el registro de usuarios en sus plataformas, ya sea con descuentos o con poder participar en sorteos únicamente para usuarios registrados.

Que un usuario se registre, no significa realmente que "una persona" se registre, ya que (por ejemplo) con el fin de obtener un descuento por cuenta nueva, una persona puede registrar varias (o cientos) de cuentas y con ello tener descuentos ilimitados. Aquí es donde el equipo de tecnología y los usuarios más avispados juegan al gato y al ratón, haciendo y rompiendo mecanismos para evitar tanto registros múltiples como el uso de robots.

Si el servicio requiere que el usuario suba documentación (banco, alquiler de moto eléctrica, seguros, etc...) o realice un pago, es relativamente sencillo hacer la correspondencia persona/cuenta pero si tenemos cualquier otro servicio, tendremos que tener más cuidado:

Validación por IP

Lo primero que se te puede venir a la cabeza es restringir más de un registro de usuario por IP. Esto no es posible ya que de forma legítima varias personas pueden utilizar la misma IP o una persona puede utilizar varias IPs.

Se utiliza para prevenir la utilización de robots (y/o ataques de denegación de servicio), pero es ineficaz ya que utilizando listado de proxies el robot en cuestión "salta" de una IP a otra de una manera extremadamente fácil, haciendo este mecanismo ineficaz.

Captchas

Para evitar la utilización de robots, es muy común la utilización de captchas: un método fácilmente implementable en formularios que propone una prueba al usuario para comprobar si realmente es "humano".

Particularmente el captcha de Google: reCAPTCHA tiene muchos mecanismos para detectar robots, como velocidad de movimiento del ratón, IP, preguntas sobre lo que se ve en una fotografía, etc... lo cual pone muy difícil a los robots pasarlo más de 2 o 3 veces seguidas (conforme se resuelven captchas en un corto periodo de tiempo, éstos se vuelven más difíciles).

Para saltar captchas (incluido el de Google) existen herramientas como Anti-captcha que mediante API hace posible enviar captchas a la plataforma y una persona (si, una persona) en menos de 10 segundos lo resuelve. Este servicio funciona realmente bien e incluso tienen una extensión de Chrome y Firefox que resuelve automáticamente captchas. El precio por captcha resuelto es muy muy bajo.

Validación de email único

Una manera de evitar múltiples registros por persona es la validación de email. Para que un usuario se pueda registrar el email proporcionado (y posteriormente validado mediante el envío de un email para confirmar registro) debe ser único en base de datos, de tal manera que  alguien (o algo) no se pueda registrar dos veces utilizando el mismo correo electrónico. Esta medida, por sí misma, también mejora la experiencia de usuario ya que previene que usuarios despistados se registren dos veces.

El problema reside en que se presupone que una persona únicamente puede poseer una cuenta de correo pero esto no es cierto ya que:

  • De manera manual o automática, se pueden crear tantas cuentas de correo como queramos... si son gratuitas, habrá que saltarse limitaciones de los proveedores de correo electrónico.
  • Un truco en Gmail permite tener infinitas cuentas de correo en una única cuenta, simplemente añadiendo al final del usuario +cualquiercosa o añadiendo puntos separando caracteres. Todas las siguientes cuentas acaban en el mismo sitio:
    pepe@gmail.com
    p.epe@gmail.com
    pe.p.e@gmail.com
    pepe+123@gmail.com
    pepe+asas@gmail.com
    
  • Utilizando un dominio con un catch-all, es decir, que cualquier dirección de correo de ese dominio acabe en una específica. Por ejemplo, este servicio de manera gratuita te permite redirigir TODAS las direcciones de correo de un dominio hacia otra dirección de correo.

Validación por sms

Siguiendo el modelo del método anterior, el número de móvil introducido en el registro y validado mediante sms debe ser único en base de datos. Que una persona tenga varios números de móvil es un poco más difícil, pero no imposible.

Existen servicios de internet mediante los cuales se pueden conseguir teléfonos virtuales de una manera sencilla, en una primera búsqueda, encontramos Twilio: una plataforma dedicada a cualquier cosa relacionada con la telefonía programática, el problema es que el coste de setup y mantenimiento es elevado (para utilizarlo con el fin de este artículo). En una segunda búsqueda, encontramos Get sms code, un servicio que mediante API o consola de usuario, pone a disposición miles de teléfonos virtuales de todo el mundo y los relaciona con servicios, de tal manera que un mismo número no puede utilizarse 2 veces para registrar una cuenta en facebook, pero si para registrar cualquier otro de sus servicios. Por ejemplo, utilizar un número virtual chino para registrar una cuenta en nike.com cuesta $0,0135.