Skip Rules en Cloudflare – Cómo permitir tráfico legítimo de apps y servicios propios sin saltarse la protección contra bots.

Tiempo de lectura: 2 minutos

Cómo permitir tráfico legítimo de apps y servicios propios sin saltarse la protección contra bots.

Coches - Pexels

Cuando configuras reglas de bloqueo agresivas en Cloudflare (por país, por comportamiento, etc.), el tráfico legítimo de tus propias apps y servicios puede quedar bloqueado también. Las Skip Rules permiten que ciertas peticiones pasen directamente, saltándose el resto de reglas.

⚠️ Orden importa Las reglas de Cloudflare se ejecutan de arriba a abajo. Las Skip Rules SIEMPRE deben estar en las primeras posiciones, antes de cualquier regla de bloqueo.

El escenario

Supongamos que tienes myapp.com, una aplicación con:

  • Una app móvil (iOS + Android) que consume tu API
  • Reglas de bloqueo por países y rutas maliciosas

Sin Skip Rules, tu app móvil podría quedar bloqueada por las mismas reglas que frenan a los bots.

Estructura de reglas recomendada

Así debe quedar el orden en Security → WAF → Custom Rules:

OrderNombreCondiciónAcción
1Whitelist apps propiasUser-Agent o Header personalizadoSkip
2Block rutas maliciosasURI contiene /.env, /.git, etc.Block
3Challenge por paísPaís en lista sospechosaJS Challenge
4Block total por paísPaís de alto riesgoBlock

Crear la Skip Rule

Ve a Security → WAF → Custom Rules → Create rule y escribe la siguiente expresión. Esta regla cubre la app móvil:

Regla:


# Cubre la app móvil (por header personalizado)
(any(http.request.headers["header_secreto"][*] contains "codigo_clave_secreta_token"))

En Choose action selecciona Skip → marca Skip all remaining custom rules.

✅ Resultado Cualquier petición que llegue con el User-Agent correcto se saltará todas las reglas de bloqueo.

Añadir el header en tu app móvil

En tu cliente HTTP (ejemplo con Axios en React Native), añade el header en el interceptor de requests:

axiosInstance.interceptors.request.use((config) => {

  config.headers["header_secreto"] = `codigo_clave_secreta_token`;
  return config;
});

ℹ️ Nota sobre mayúsculas Cloudflare normaliza todos los headers a minúsculas internamente. Da igual si en tu app escribes Header_Secretro o header_secreto — la comparación funcionará igual.

¿Es seguro esto?

Depende del nivel de amenaza:

EscenarioHeader soloHeader + Token secreto
Bots genéricos masivos✓ Suficiente✓ Suficiente
Scrapers automáticos✓ Suficiente✓ Suficiente
Atacante dirigido a tu app✗ Puede replicarlo✓ Sin el token no pasa

🔒 Nunca expongas el token No lo subas a GitHub ni lo incluyas en logs. Úsalo como variable de entorno en tu app.

Verificar que funciona

Desde terminal, simula una petición de tu app y comprueba que no es bloqueada:

cURL — Test

# Debe pasar (simula la app)
curl -v https://api.myapp.com/endpoint \
-H "header_secreto: codigo_clave_secreta_token"

# Debe ser bloqueado (sin header, desde país bloqueado)
curl -v https://api.myapp.com/endpoint

En Cloudflare → Security → Events verás en tiempo real qué regla se aplicó a cada petición y si fue Skip, Block o Challenge.

✅ Todo correcto si… Las peticiones con el header aparecen como «Skip» en el log de eventos, y las peticiones sin header desde países bloqueados aparecen como «Block».

Deja un comentario