Cloudflare puede permitir cargar la página y desafiar o bloquear después la petición AJAX, REST o POST. El visitante verá un spinner infinito, un error genérico o HTML que el script esperaba interpretar como JSON.
Relaciona la petición con el evento de seguridad y ajusta la regla concreta, sin desactivar la protección de toda la web.
Captura la evidencia del navegador
Envía datos sintéticos identificados e inspecciona la petición. Anota endpoint, método, estado, tipo de contenido, hora y Ray ID.
Una página HTML de challenge devuelta a un endpoint que espera JSON es una señal fuerte. Elimina cookies, tokens y campos de las capturas.
Comprueba si alcanzó WordPress buscando la entrada y los logs de origen.
Localiza el evento de seguridad
Busca en Security Events mediante Ray ID, hora, ruta, acción y características del cliente. Identifica si intervino WAF gestionado, regla propia, rate limit, bot protection o lista.
Registra ID y motivo de la regla antes de cambiarla. Un 403 sin evento correspondiente puede provenir de ModSecurity o un plugin WordPress.
Mantén explícitos el formulario y tráfico afectados.
Revisa también el orden de evaluación. Una regla Skip situada después de una regla Block no podrá corregirla, y omitir un managed rule no desactiva necesariamente bot protection o un rate limit independiente. Documenta qué productos exactos se omiten.
Distingue página y endpoint
La página puede ser /contacto/, mientras el envío usa /wp-json/..., /wp-admin/admin-ajax.php o una ruta del plugin. Una regla basada solo en la URL visible no explica la petición.
Mapea método, path y parámetro action cuando exista. No permitas globalmente admin-ajax.php: muchos plugins y ataques lo usan.
Prefiere identificadores estables del plugin en la expresión de Cloudflare.
Crea la excepción mínima
Omite o ajusta solo la regla confirmada para endpoint, método y características imprescindibles. Conserva rate limits y reglas gestionadas que no causen el falso positivo.
No autorices IP de visitantes normales; cambian y pueden compartir red con atacantes. No excluyas todos los POST o REST.
Cuando sea posible, combina hostname, método, ruta exacta y un identificador estable de acción. Evita basarte únicamente en cabeceras que el cliente pueda falsificar; la excepción debe reducir el falso positivo sin convertirse en una ruta de bypass pública.
Documenta propietario, motivo y fecha de revisión.
Comprueba la compatibilidad del challenge
Un desafío interactivo no puede completarse dentro de muchas peticiones fetch. Si se exige en la página, el visitante debe resolverlo antes de inicializar el formulario y la cookie de clearance debe aplicarse al endpoint.
Revisa consentimiento y privacidad del navegador que pueden impedir conservar el estado. Prueba Safari y redes móviles donde ocurran los avisos.
Turnstile integrado en el formulario se diagnostica aparte del challenge de zona.
Ajusta los límites al comportamiento real
Un formulario multipaso, uploads y reintentos de validación generan varias peticiones legítimas. Mide la secuencia normal y fija umbrales por encima sin dejar de frenar automatización.
Limita la acción final costosa cuando sea posible y usa protección idempotente para pagos o creación en CRM.
Devuelve un mensaje de reintento real, no un éxito fabricado o cacheado.
Mantén alineada la seguridad de origen
Aunque Cloudflare permita, el origen puede bloquear mediante ModSecurity, seguridad WordPress o nonce. Correlaciona logs con la misma hora.
No crees excepciones amplias solapadas en cada capa. Corrige el primer rechazo demostrado y vuelve a recorrer la cadena.
Restringe el acceso directo al origen cuando la arquitectura lo admita.
Verifica protección y conversión
Envía el formulario en vivo desde un navegador normal sin sesión. Confirma que Cloudflare permite, WordPress guarda una entrada y el email llega.
Prueba un rate limit controlado o petición inválida para asegurar que la protección responde. Monitoriza eventos y errores de conversión sin registrar contenido.
Solicita reparación urgente cuando reglas gestionadas, bots y rutas críticas entren en conflicto. Comparte Ray ID, rule ID y detalles redactados, nunca cookies, tokens o datos personales.