Implementa protección contra spam eficaz sin frustrar a usuarios legítimos con CAPTCHAs difíciles.
El problema de los CAPTCHAs
Por qué los CAPTCHAs son problemáticos
CAPTCHAs tradicionales:
- "Selecciona todas las imágenes con semáforos"
- "Escribe estas letras distorsionadas"
- "Resuelve este problema matemático"
- "Haz clic hasta que la imagen esté derecha"
Problemas:
- Frustrantes para todos los usuarios
- Pésima accesibilidad (personas con discapacidad visual)
- Mala experiencia móvil
- Reduce las tasas de conversión entre un 10 y un 30 %
- Requiere tiempo y esfuerzo cognitivo
- Los usuarios suelen abandonar el formulario
La paradoja: Estás castigando a usuarios legítimos para frenar bots.
Alternativas mejores
Protección contra spam moderna que:
- Funciona de forma invisible para la mayoría de usuarios
- Mantiene la accesibilidad
- Preserva la experiencia de usuario
- Detiene más del 99 % del spam
- No requiere interacción del usuario
Técnicas antispam eficaces
1. Cloudflare Turnstile (recomendado)
Qué es:
Detección de bots de nueva generación que suele funcionar de forma invisible.
Cómo funciona:
- Analiza el comportamiento del navegador
- Comprueba patrones de bots
- Verifica que es humano de forma automática
- Rara vez requiere interacción del usuario
Ventajas:
- ✓ Suele ser invisible para los usuarios
- ✓ Accesible según WCAG
- ✓ Adaptado a móvil
- ✓ Sin puzles ni selección de imágenes
- ✓ Verificación rápida
- ✓ Respeta la privacidad
Experiencia de usuario:
El usuario rellena el formulario → Haz clic en enviar → El formulario se envía
(Turnstile verifica en segundo plano)
Implementación:
SupportRetriever incluye Turnstile por defecto. No hace falta configurar nada.
Eficacia: Bloquea entre el 95 y el 99 % del spam automatizado.
2. Campos honeypot
Qué es:
Campo oculto que los bots rellenan pero los humanos no ven nunca.
Cómo funciona:
<!-- Invisible para humanos, fuera del orden de tabulación -->
<input
type="text"
name="website"
tabindex="-1"
autocomplete="off"
aria-hidden="true"
style="position: absolute; left: -9999px;"
>
Comprobación en el servidor:
// If honeypot field is filled, it's a bot
if (formData.website !== '') {
return reject('Spam detected');
}
Ventajas:
- ✓ Cero impacto para el usuario
- ✓ Completamente invisible
- ✓ Sin problemas de accesibilidad
- ✓ Detecta bots básicos
- ✓ Fácil de implementar
Experiencia de usuario:
Ningún cambio visible. Funciona en silencio.
Eficacia: Bloquea entre el 60 y el 70 % de los bots básicos.
3. Límite de tasa
Qué es:
Limitar el número de envíos desde la misma IP o usuario.
Cómo funciona:
- Registrar envíos por dirección IP
- Bloquear si hay demasiados en poco tiempo
- Limitación gradual (no bloqueo duro)
Ejemplos de configuración:
Conservadora (sitios pequeños):
- 5 envíos por hora por IP
- 20 envíos al día por IP
Equilibrada (sitios medianos):
- 10 envíos por hora por IP
- 50 envíos al día por IP
Permisiva (sitios con mucho tráfico):
- 20 envíos por hora por IP
- 100 envíos al día por IP
Ventajas:
- ✓ Detiene avalanchas de spam
- ✓ Sin impacto para el uso legítimo
- ✓ Previene ataques en ráfaga
- ✓ Implementación en backend (invisible)
Experiencia de usuario:
Los usuarios normales no alcanzan el límite. Los bots se bloquean tras los primeros intentos.
Eficacia: Bloquea entre el 80 y el 90 % de las avalanchas automatizadas.
4. Validación de correo
Qué es:
Comprobar que la dirección de correo es válida antes de aceptar el envío.
Capas de validación:
1. Comprobación de formato:
// Basic format validation
const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
if (!emailRegex.test(email)) {
return 'Please enter a valid email address';
}
2. Verificación de dominio:
- Comprobar si el dominio existe (consulta DNS)
- Verificar registros MX (puede recibir correo)
- Bloquear servicios de correo temporal (opcional)
3. Detección de correo desechable:
- Bloquear servicios de correo temporal conocidos
- Reduce envíos falsos
- Opcional (puede ser demasiado agresivo)
Ventajas:
- ✓ Reduce envíos falsos
- ✓ Mejora la entregabilidad
- ✓ Mensajes de error claros para el usuario
- ✓ Validación rápida
Experiencia de usuario:
Mensaje de error útil si el correo no es válido:
"Please enter a valid email address (e.g., name@example.com)"
Eficacia: Reduce entre el 50 y el 70 % de los envíos no válidos.
5. Filtrado de contenido
Qué es:
Detectar patrones de spam en el contenido del mensaje.
Indicadores de spam:
- Mensajes en mayúsculas
- Enlaces excesivos
- URLs sospechosas
- Frases de spam conocidas
- Texto sin sentido
- Caracteres repetidos
Ejemplo de reglas:
// Flag as potential spam if:
- Mensaje contains 5+ URLs
- Mensaje is all caps
- Contains "click here to claim"
- Contains "100% free money"
- Has repeated characters (aaaaaaa)
Ventajas:
- ✓ Detecta spam sofisticado
- ✓ Mejora con el tiempo
- ✓ Sin falsos positivos con buenas reglas
- ✓ Invisible para usuarios legítimos
Experiencia de usuario:
Mensaje legítimo: "I need help with billing"
→ Pasa
Spam: "CLICK HERE FREE MONEY !!!"
→ Bloqueado
Eficacia: Bloquea entre el 70 y el 80 % del spam basado en contenido.
6. Limitación por tiempo
Qué es:
Medir la rapidez con la que se rellena el formulario.
Implementación:
// Track time between page load and submission
const pageLoadTime = Date.now();
// On submission:
const fillTime = Date.now() - pageLoadTime;
// If submitted in less than 2 seconds, likely a bot
if (fillTime < 2000) {
return reject('Submission too fast');
}
Ventajas:
- ✓ Detecta envíos automatizados
- ✓ Invisible para usuarios normales
- ✓ Fácil de implementar
Precaución:
- No pongas el umbral demasiado alto
- Algunos usuarios rellenan rápido
- Debe ser suave (no defensa principal)
Experiencia de usuario:
Los usuarios normales tardan 10-30 segundos en rellenar. No notan esta comprobación.
Eficacia: Bloquea entre el 50 y el 60 % de los envíos instantáneos de bots.
Configuración antispam recomendada
Configuración mínima (sitios pequeños)
Usar:
- Cloudflare Turnstile
- Validación de correo
- Límite de tasa básico
Configuración:
Turnstile: Enabled
Rate limit: 5 per hour
Correo electrónico validation: Formularioat + domain check
Eficacia: Más del 95 % de reducción de spam
Impacto en el usuario: Mínimo
Tiempo de configuración: 5 minutos (integrado en SupportRetriever)
Configuración equilibrada (sitios medianos)
Usar:
- Cloudflare Turnstile
- Campo honeypot
- Validación de correo (con detección de desechables)
- Límite de tasa
- Filtrado de contenido básico
Configuración:
Turnstile: Enabled
Honeypot: Enabled
Rate limit: 10 per hour, 50 per day
Correo electrónico validation: Full (including disposable detection)
Content filtering: Moderate
Eficacia: Más del 99 % de reducción de spam
Impacto en el usuario: Muy bajo
Tiempo de configuración: 10 minutos
Configuración agresiva (sitios con mucho tráfico)
Usar:
- Cloudflare Turnstile
- Campo honeypot
- Validación de correo (estricta)
- Límite de tasa (por IP y por sesión)
- Filtrado de contenido (estricto)
- Limitación por tiempo
Configuración:
Turnstile: Enabled
Honeypot: Enabled
Rate limit: 10 per hour per IP, 3 per session
Correo electrónico validation: Strict (block disposable/temporary)
Content filtering: Strict rules
Time throttling: Minimum 3 seconds
Eficacia: Más del 99,5 % de reducción de spam
Impacto en el usuario: Bajo (puede marcar ocasionalmente a usuarios avanzados)
Tiempo de configuración: 20 minutos
Solución de problemas: pico repentino de spam
Si estás recibiendo una oleada de spam
Acciones inmediatas:
1. Activar un límite de tasa más estricto
Reducir a: 3 envíos por hora por IP
2. Comprobar que Turnstile funciona
- Verificar que el widget aparece en el formulario
- Comprobar errores de JavaScript
- Confirmar la validación en el backend
3. Revisar envíos recientes
- Buscar patrones (misma IP, mismo contenido)
- Identificar el origen si es posible
4. Filtrado agresivo temporal
- Activar bloqueo de correos desechables
- Añadir reglas de contenido más estrictas
- Bajar el umbral de tiempo
5. Bloquear IPs concretas (si hay ataque dirigido)
- Identificar las IPs atacantes
- Añadir a la lista de bloqueo
- Monitorizar nuevas IPs
Respuesta a largo plazo
Investigar el origen:
- ¿Se filtró la dirección de correo?
- ¿Se compartió un enlace en algún sitio?
- ¿Están atacando la URL del formulario?
Reforzar defensas:
- Mantener configuración agresiva temporalmente
- Monitorizar la reducción de spam
- Relajar la configuración poco a poco cuando se calme
Seguir métricas:
- Envíos de spam al día
- Envíos legítimos (no bloquearlos)
- Tasa de falsos positivos
Cómo ayuda SupportRetriever
Protección integrada
SupportRetriever incluye:
✓ Cloudflare Turnstile
- Activado por defecto
- Invisible para la mayoría de usuarios
- Muy eficaz
✓ Límite de tasa
- Limitación automática por IP
- Previene avalanchas
- Umbrales configurables
✓ Validación de correo
- Comprobación de formato
- Verificación de dominio
- Mensajes de error claros
✓ Campos honeypot
- Invisibles para los usuarios
- Detectan bots básicos
✓ Análisis de contenido
- Detección de patrones
- Puntuación de spam
- Mejora con el tiempo
Qué puedes configurar
En Ajustes:
- Umbrales de límite de tasa
- Bloqueo de correos desechables (on/off)
- Nivel de filtrado de contenido
- Dominios permitidos/bloqueados
Monitorización
Ver en el panel:
- Intentos de spam bloqueados
- Eficacia de la protección
- Tasa de falsos positivos (si la hay)
- Patrones de ataque
Buenas prácticas
Qué hacer
✓ Empieza con protección mínima
- Añade más si hace falta
- No te pases de ingeniería
✓ Monitoriza los falsos positivos
- Revisa los envíos bloqueados
- Ajusta si se bloquean usuarios legítimos
✓ Prueba tu propio formulario
- Envía mensajes de prueba
- Verifica que la protección funciona
- Asegura una buena experiencia de usuario
✓ Mantén la protección invisible
- No añadas CAPTCHAs evidentes
- Deja que Turnstile trabaje en silencio
- Mantén una buena UX
✓ Sigue métricas
- Tasa de bloqueo de spam
- Tasa de envíos legítimos
- Tasa de finalización del formulario
Qué no hacer
✗ No uses CAPTCHAs difíciles
- Daña las tasas de conversión
- Mala accesibilidad
- Frustra a los usuarios
✗ No pongas límites de tasa demasiado bajos
- Puede bloquear a usuarios legítimos
- Sobre todo en IPs compartidas (oficinas)
✗ No bloquees todos los correos desechables
- Algunos usuarios legítimos los usan
- Puede reducir envíos de quienes priorizan privacidad
✗ No ignores los falsos positivos
- Monitoriza los envíos bloqueados
- Ajusta las reglas si hace falta
✗ No dependas de una sola técnica
- Combina varias protecciones
- Ninguna técnica es perfecta
Comparación de eficacia
| Técnica | Reducción de spam | Impacto usuario | Accesibilidad | Tiempo config. |
|---|---|---|---|---|
| CAPTCHA difícil | 90 % | Alto (malo) | Pobre | 10 min |
| Turnstile | 95-99 % | Muy bajo | Excelente | 5 min |
| Honeypot | 60-70 % | Ninguno | Perfecta | 5 min |
| Límite de tasa | 80-90 % | Ninguno | Perfecta | 10 min |
| Validación correo | 50-70 % | Bajo | Buena | 10 min |
| Filtrado contenido | 70-80 % | Bajo | Buena | 15 min |
| Enfoque combinado | 99 %+ | Bajo | Excelente | 15 min |
Ganador: El enfoque combinado (Turnstile + ayudas) ofrece la mejor protección con el menor impacto para el usuario.
