Saltar al contenido

Temas y plugins

White Hat Antibots: parar el correo basura sin ponerle un captcha al visitante

White Hat Antibots protege el formulario de contacto sin ponerle un captcha delante al visitante. Comprueba todo del lado del servidor —campos obligatorios, casilla de privacidad, una pregunta de control y un campo señuelo— y corta el envío antes de que llegue a convertirse en correo.

Un cliente nos llegó con el buzón lleno de basura. Tenía el formulario de un constructor visual conocido, con su casilla anti-robots activada, y aun así le entraban decenas de mensajes automáticos al día.

La causa era más simple de lo que parecía, y es un fallo común: la comprobación se hacía solo en el navegador. Un robot que envía la petición directamente al servidor, sin abrir la página, no pasa por ninguna casilla. Se salta la puerta porque nunca entró por ella.

Todo se comprueba en el servidor

El plugin se engancha al mismo evento del formulario pero antes que él, y vuelve a comprobarlo todo desde el servidor. Si algo no cuadra, corta la petición y el correo no se envía. Da igual por dónde haya entrado el robot.

Un robot que envía la petición directamente al servidor se salta la comprobación del navegador; con la validación en el servidor, ese mismo envío se corta antes de convertirse en correo.
El robot nunca abrió la página, así que nunca vio la casilla. Por eso hay que comprobar detrás.

Dos defensas que no molestan a nadie

La primera es una pregunta de control del tipo «¿cuánto es cuatro más tres?». Una persona la responde sin pensar; un robot genérico, que rellena campos por su nombre, no. La segunda es un campo señuelo escondido con CSS: las personas no lo ven y por tanto lo dejan vacío, mientras que los robots rellenan todo lo que encuentran. Un señuelo relleno es la firma de un robot.

Ninguna de las dos le pide al visitante que descifre letras torcidas ni que seleccione semáforos en una cuadrícula. Eso importa más de lo que parece: cada obstáculo que pones en un formulario de contacto es gente real que se va sin escribirte.

Y para quien quiera más: captcha oficial, opcional

Hay sitios que reciben ataques más insistentes y prefieren sumar una capa extra. Para ellos, desde la versión 1.4.0 el plugin trae la opción de activar un captcha oficial —Cloudflare Turnstile, que es gratuito, o Google reCAPTCHA v2 o v3— desde una pantalla de ajustes, sin tocar código. Viene apagado de fábrica: la filosofía sigue siendo no ponerle obstáculos al visitante.

Lo importante es dónde se comprueba: el token que emite el captcha se verifica en el servidor, contra la API del proveedor, igual que el resto de las defensas. Un robot que mande la petición directa sin token —o con un token inventado— se corta antes de convertirse en correo. La clave secreta se guarda en el sitio y no se vuelve a mostrar una vez guardada; y con el captcha activo, la pregunta de control se esconde sola para no cobrar dos peajes por el mismo puente.

Y una herramienta de propina

El plugin trae además una utilidad para purgar la caché de elementos de Elementor. Está ahí porque en el mismo sitio hacía falta y no daba para un plugin aparte, y porque es un problema que despista a mucha gente: Elementor guarda el CSS de cada página en archivos, y después de cambiar algo por código —o por la API— el sitio sigue sirviendo el archivo viejo incluso a los administradores. Se ve el cambio en el editor y no en la web, y uno acaba buscando el fallo donde no está.

Es un ejemplo pequeño de cómo trabajamos: cuando una herramienta a medida ya existe para un cliente, añadirle lo que ese cliente necesita cuesta una tarde. En un plugin comprado, esa misma necesidad se convierte en un segundo plugin más que instalar, actualizar y vigilar.

Qué no hace

No es un cortafuegos ni sustituye a uno. Protege el envío del formulario, que es por donde entraba el problema de este cliente, y nada más. Contra un ataque dirigido, escrito a mano contra tu sitio en concreto, ninguna pregunta de control aguanta: eso se defiende en otra capa.

Es también el más pequeño de nuestros plugins —un archivo principal de unas seiscientas líneas, más sus traducciones a nueve idiomas—. Trae su propio formulario de contacto por atajo (shortcode), que funciona en cualquier tema, y además sabe proteger el formulario del constructor con el que nació; sobre otro constructor hay que adaptar la parte que lee los campos.

Cómo se entrega y qué incluye

Todo lo que publicamos aquí nació de un encargo real, y así es como se sigue entregando: instalado, documentado y con el código a nombre de quien lo paga. El mantenimiento —actualizaciones con respaldo previo, revisión de seguridad y un margen de horas para cambios pequeños— se contrata aparte.

Puedes ver el resto de piezas en nuestro catálogo de temas y plugins, o contarnos qué necesita tu sitio: el diagnóstico inicial no tiene costo y de ahí sale si conviene algo propio o adaptar lo que ya existe.

Preguntas frecuentes

¿Por qué no usar un captcha normal?

Porque cuesta visitas. Un captcha añade fricción a todo el mundo para detener a unos pocos, manda datos a un tercero y en móviles se equivoca a menudo. Una pregunta de control y un señuelo detienen a los robots genéricos sin que la persona note nada.

¿Y si el robot aprende a responder la pregunta?

Puede pasar con un ataque escrito contra tu sitio en concreto. La pregunta se cambia desde el código, y para ese escenario hacen falta además medidas de servidor. Contra el correo basura automático, que es la inmensa mayoría del problema, funciona.

¿Frena los mensajes que ya me estaban llegando?

Los que entraban saltándose la comprobación del navegador, sí: ahora la validación corre en el servidor y esos envíos no llegan a convertirse en correo.

¿Se puede perder un mensaje de un cliente de verdad?

Las dos comprobaciones están pensadas para que no: la pregunta de control es de cálculo elemental y el campo señuelo está oculto, así que una persona no lo ve ni lo rellena. Si alguien falla la pregunta, el formulario se lo dice y puede corregirlo; no se descarta en silencio.

¿Sirve con cualquier formulario?

Trae su propio formulario de contacto por shortcode, que funciona en cualquier tema de WordPress y ya incluye todas las defensas. Además sabe proteger el formulario del constructor con el que nació; para otro constructor hay que adaptar la parte que lee los campos, que es poco código.

¿Puedo activar un captcha de todos modos?

Sí. Desde la versión 1.4.0 hay una pantalla de ajustes para activar Cloudflare Turnstile (gratuito) o Google reCAPTCHA v2 o v3 con sus claves oficiales, sin tocar código. El token se verifica en el servidor contra la API del proveedor, la clave secreta no se vuelve a mostrar una vez guardada, y la opción viene apagada de fábrica.

Compartir

Cuéntanos qué quieres construir o automatizar

Media hora de conversación y te decimos qué se puede mejorar en tu operación, cuánto cuesta y en cuánto tiempo. Sin compromiso.

Solicitar diagnóstico