Un cliente me llamó diciendo que le estaban llegando correos desde el formulario de contacto de su web, de forma regular, y que todos eran spam. Los mensajes eran de este tipo:
Referencia: 65011
Nombre y apellidos: Loree
Empresa: oupJboHYzHQPLIawhe
Teléfono: 1286843212349
Correo electrónico:fairplay@vidc.org
Mensaje:?Hey, youÂ’re the goto expert. Tahkns for hanging out here.
Lo primero que te preguntas es ¿qué interés puede tener el que hace esto? Haciendo spam a una persona que no conoce. En fin, la cuestión es que el formulario tenía validación de campos y captcha, pero eso no detenía al spambot, que seguía enviando los correos mediante ese formulario.
Dado que este tipo de ataques se suele hacer de forma indiscriminada, o sea, que el spammer no está mirando si pones alguna medida de seguridad para modificar su script de ataque, se pueden solventar sin problemas.
Hay varias cosas que suelen funcionar:
- Usar campos ocultos mediante CSS: El spambot autorellena los campos, e intenta poner los datos correctos según el nombre del campo (si se llama email, pone un email, si se llama telefono/phone, pone numeros) para evitar la validación, pero si rellena un campo real oculto mediante CSS y compruebas que ese campo ha sido rellenado, es que solo lo ha podido rellenar un spambot.
- Con lo comentado en el punto anterior, si no llamas a los campos de formulario con nombres comunes, o sea por ejemplo llamas al campo email "juanin", el spambot no sabrá qué tipo de datos usar para el relleno con lo que la validación lo detendrá.
- La "pregunta humana": Poner esto es un coñazo, pero puedes poner al final del formulario una pregunta para humanos tipo ¿Cuanto son 2 + 2? y comprobar antes de enviar.
- Si ya quieres hilar fino, puedes usar el API de Akismet, que permite comprobar si el mensaje que se va a mandar por email es spam o no. En forma de plugin es muy popular entre los usuarios de Wordpress, que evitan así que los machaquen a spam (sobre todo en los comentarios de los posts).
Hay muchos otros métodos, pero los spambots tampoco son tan listos.