Hushfort

¿Cómo evito el spam en los formularios de contacto de WordPress sin usar un CAPTCHA?

Por Eureka Studio · Actualizado

Respuesta corta

En lugar de un CAPTCHA en tus formularios de WordPress, combina comprobaciones invisibles: un campo trampa oculto que solo rellenan los bots, un tiempo mínimo de cumplimentación, un token que resiste la caché de página y límites por IP y por correo electrónico. Pon en cuarentena los mensajes dudosos en lugar de borrarlos. Un plugin local puede hacerlo para Elementor, Contact Form 7 y WPForms sin enviar datos a ningún otro sitio. En Hushfort, la protección de plugins de formularios es parte de Pro; el plugin gratuito cubre solo los comentarios y las valoraciones.

Pasos

  1. 1Paso 1

    Observa cómo los bots atacan tu formulario

    Los bots rellenan todos los campos que encuentran, incluido uno oculto que una persona nunca ve, o envían sin llegar a cargar la página. El registro de Hushfort nombra cada caso: campo trampa rellenado, sin token, rellenado demasiado rápido, demasiados enlaces.

    La tabla Registros y cuarentena del Escudo antispam con entradas del formulario de contacto de WPForms: sin token, límite por IP superado, campo trampa rellenado, demasiados enlaces
  2. 2Paso 2

    Activa el Escudo antispam en modo Supervisión

    En Hushfort, abre el Escudo antispam, actívalo y pon Modo en "Solo registrar — modo Supervisión, no bloquea nada". Con Hushfort Pro instalado, deja activado Plugins de formularios y guarda. Registra lo que bloquearía sin bloquear nada todavía.

    Escudo antispam activado con Modo en Solo registrar — modo Supervisión, no bloquea nada
  3. 3Paso 3

    Ajusta los límites silenciosos (Pro)

    Mantén corto el Tiempo mínimo de cumplimentación (3 segundos). Con Pro, limita además cuántos mensajes por hora puede enviar una IP (Límite por IP) o una dirección de correo electrónico (Límite por correo electrónico). Los mensajes con más enlaces que el Máximo de enlaces van a cuarentena.

    Límites del Escudo antispam: tiempo mínimo de cumplimentación 3 segundos, límite por IP 5 por hora, límite por correo electrónico 3 por hora, máximo de enlaces 2
  4. 4Paso 4

    Revisa el registro y cambia a Bloquear

    Al cabo de unos días, mira lo que ha detectado el modo Supervisión. Si no hay mensajes reales, pon Modo en "Bloquear (recomendado)" y guarda.

    Modo del Escudo antispam cambiado de Solo registrar a Bloquear (recomendado) y guardado
  5. 5Paso 5

    Las personas reales simplemente envían

    Un visitante escribe durante medio minuto, nunca ve el campo oculto y envía. Sin acertijos ni cuadrículas de imágenes.

    Un visitante rellena el formulario de contacto de la tienda de demostración y lo envía; el formulario responde con un mensaje de agradecimiento

Por qué importa

El spam en formularios es una simple molestia hasta que deja de serlo. Entierra las consultas reales, te acostumbra a leer el correo por encima y puede hundir la reputación de envío de tu servidor de correo si el formulario manda respuestas automáticas. En webs con mucho tráfico también consume tiempo de servidor, porque cada envío pasa por todo el procesamiento del plugin de formularios.

La solución habitual, un CAPTCHA, traslada el coste a tus visitantes. Resuelven acertijos, algunos se rinden y quienes usan herramientas de privacidad se quedan atascados. La mayoría de los servicios CAPTCHA también cargan código de terceros y envían datos de los visitantes fuera de tu servidor.

Hay una forma más discreta. Los bots se comportan de manera distinta a las personas, y eso se puede comprobar en silencio:

  • Rellenan campos ocultos. Un campo trampa (honeypot) es un campo oculto para las personas pero visible en el HTML. Una persona lo deja vacío; un bot lo rellena.
  • Son rápidos. Una persona necesita unos segundos para rellenar un formulario. Un bot, milisegundos.
  • Se repiten. Una IP o una dirección de correo que envía diez mensajes en una hora no es un cliente.
  • Pegan enlaces. Un mensaje lleno de enlaces rara vez es una consulta real.

Errores habituales

  • Bloquear en lugar de poner en cuarentena. Cuando una comprobación no está segura, guarda el mensaje para revisarlo. Borrar la pregunta de un cliente real es peor que leer un spam.
  • Pasar directamente a Bloquear. Empieza unos días en un modo que solo registra. Comprueba lo que se habría bloqueado antes de dejar que bloquee.
  • Tokens que se rompen con la caché. Si tu token antispam forma parte de una página en caché, todos los visitantes comparten un mismo token caducado. Usa una protección que obtenga su token al cargar la página.
  • Una sola comprobación. Un campo trampa por sí solo frena a los bots simples. Añade un control del tiempo de cumplimentación y límites.

Sin plugin

La mayoría de los plugins de formularios traen una versión básica de esto:

  • Formularios de Elementor Pro: añade un campo "Honeypot" desde la lista de campos.
  • Contact Form 7: añade un campo trampa mediante un complemento; CF7 también es compatible con Akismet si aceptas enviar datos a ese servicio.
  • WPForms: incluye un token antispam integrado y un campo trampa opcional en los ajustes de cada formulario.

También puedes añadir a mano un campo trampa sencillo a cualquier formulario que controles:

<div style="position:absolute;left:-9999px" aria-hidden="true">
  <label>Leave this empty <input type="text" name="website" tabindex="-1" autocomplete="off"></label>
</div>
<?php
if ( ! empty( $_POST['website'] ) ) {
    wp_die( 'Spam detected.', 403 );
}

Las limitaciones: cada plugin de formularios lo hace a su manera, normalmente no hay un límite de envíos compartido entre formularios, ni una cuarentena que recoja los errores, ni nada para los comentarios o las valoraciones. Acabas configurando la misma idea cinco veces.

Si algo sale mal

  • Han dejado de llegar mensajes reales. Cambia el Escudo antispam a modo Supervisión, envía una prueba y mira en el registro qué comprobación lo detuvo.
  • Los formularios fallan solo a algunos visitantes. Vacía una vez la caché de página después de activar la protección.
  • Sigue colándose spam. Baja el límite de enlaces, añade palabras o dominios a la lista de bloqueo, o activa el modo estricto en los formularios que solo deban aceptar proveedores de correo conocidos.

Con Hushfort

El Escudo antispam de Hushfort protege los comentarios y las valoraciones de WooCommerce en Hushfort Security, el plugin de seguridad gratuito para WordPress. Los plugins de formularios necesitan Hushfort Pro, que añade seis de los más populares (Elementor Pro, Contact Form 7, WPForms, Gravity Forms, Fluent Forms y Forminator) a la misma pantalla.

  • Campo trampa invisible, tiempo mínimo de cumplimentación y tokens firmados que resisten la caché de página. El token lo proporciona un script diminuto de unos 2 KB y sin cookies.
  • Pro: límites por defecto por IP (5 por hora) y por correo electrónico (3 por hora); los mensajes con más de 2 enlaces van a cuarentena.
  • Pro: una lista de unos 9.900 dominios de correo desechable, tus propias listas de bloqueo y filtros de palabras.
  • Pro: cuarentena con aprendizaje mediante "No es spam".
  • Tiene un modo Supervisión, para que veas lo que bloquearía antes de que bloquee.

Sin CAPTCHA, sin API externas y sin que ningún dato de los formularios salga nunca de tu servidor.

Preguntas frecuentes

¿De verdad los campos trampa frenan el spam en formularios?

Frenan a la mayoría de los bots automáticos, que rellenan todos los campos que encuentran. Algunos bots más listos se saltan los campos ocultos; por eso, detrás del campo trampa hay un control del tiempo de cumplimentación y límites por IP.

¿Por qué evitar reCAPTCHA?

Añade fricción para los visitantes reales, puede fallar a quienes usan herramientas de privacidad y envía datos de los visitantes a un tercero. Muchos propietarios de webs también ven que les obliga a mostrar un aviso de cookies.

¿Funciona con la caché de página?

Sí, si el token se obtiene al cargar la página y no va incrustado en el HTML en caché. Si no, todos los visitantes reciben el mismo token caducado y los formularios fallan.

¿Qué plugins de formularios están cubiertos?

Con Hushfort Pro, el Escudo antispam cubre los formularios de Elementor Pro, Contact Form 7, WPForms, Gravity Forms, Fluent Forms y Forminator. El plugin gratuito cubre solo los comentarios y las valoraciones de WooCommerce.

¿Qué pasa con un mensaje que parece spam pero podría ser auténtico?

Con Hushfort Pro, va a cuarentena en lugar de borrarse. Márcalo como "No es spam" y se entrega, y el escudo aprende de ello.

Informar de un error o pedir una función

Tu mensaje llega directamente al equipo que desarrolla Hushfort.

¿De qué se trata?

Solo lo usamos para responderte.

Usamos estos datos solo para responderte. Privacidad