Los escudos son comprobaciones pequeñas y específicas que el borde ejecuta después de OWASP CRS y de las reglas de OpenWAF. Cada uno tiene un pseudoidentificador de regla entre 1001 y 1008: es el que aparece en los eventos de seguridad y el rule_id que usas en una excepción del WAF para apagar el escudo en una ruta.
Los escudos siguen el modo del sitio: bloquean en active, solo registran en log y no se ejecutan en off (ni con waf_level=off).
| Id | Escudo | Bloquea | Respuesta |
|---|---|---|---|
| 1001 | Endurecimiento de WordPress | Solo en sitios con stack=wordpress. | 404 |
| 1002 | SSRF (query) | Parámetros de la query que llevan una URL a una dirección interna. | 403 |
| 1003 | Redirección abierta | Parámetros de la query que redirigen a otro sitio. | 403 |
| 1004 | Paginación | Una IP que recorre muchas páginas consecutivas. | 429 |
| 1005 | Source maps | Peticiones de ficheros .map. | 404 |
| 1006 | GraphQL | Introspección y consultas muy profundas. | 404 |
| 1007 | Inyección de prompts | Frases de jailbreak enviadas a rutas de endpoints de IA. | 403 |
| 1008 | SSRF (cuerpo JSON) | URL a direcciones internas dentro de cuerpos JSON. | 403 |
Una excepción con rule_id 0 (todas las reglas del WAF) no apaga los escudos: usa el identificador del propio escudo.
Endurecimiento de WordPress
En los sitios con stack=wordpress, responde 404 a /xmlrpc.php, a /wp-json/wp/v2/users sin cabecera Authorization (enumeración de usuarios), a /wp-includes/version.php y /readme.html (revelan la versión) y a cualquier ruta que contenga wp-config.
SSRF
Revisa los valores de los parámetros de la query llamados url, webhook_url, callback_url, target_url, redirect_url, return_url, dest, destination, uri, endpoint, proxy, fetch, src, href, link, next o continue (1002), y cada texto con forma de URL absoluta dentro de un cuerpo JSON (1008). Bloquea:
- los esquemas
file,gopher,dict,ldap,jarynetdoc; - los nombres
localhost,metadata,metadata.google.internal,metadata.azure.comy cualquier nombre que acabe en.localhosto.internal; - las direcciones de loopback, privadas, de enlace local, sin especificar y de CGNAT (
100.64.0.0/10), también escritas en hexadecimal, octal o decimal, como0x7f.1o2130706433.
Las rutas relativas y el texto libre nunca se bloquean.
Redirección abierta
Revisa los parámetros de la query llamados redirect, redirect_url, redirect_uri, return, return_url, returnto, return_to, next, dest, destination, rurl, continue, callback, callback_url, forward, goto, success_url, cancel_url, checkout_url o payment_url. Una URL absoluta o relativa al protocolo (//evil.example, https:\\evil.example) solo pasa si apunta a:
- el mismo dominio registrable que el sitio (
api.example.compuede redirigir aexample.com); - un host de
redirect_allow_hostsdel sitio (ajustes): cada entrada vale para sí misma y sus subdominios; - un proveedor de pagos que cualquier sitio puede usar, como
stripe.com.
Paginación
Bloquea una IP que pide 40 páginas consecutivas de la misma ruta en 5 minutos (?page= u ?offset= con limit, take, size, per_page, pageSize, page_size o perPage). El scroll infinito de una persona queda muy por debajo.
Source maps
Responde 404 a cualquier ruta que acabe en .map, para que nunca se sirvan los source maps que revelan tu código fuente.
GraphQL
En las rutas que acaban en /graphql: bloquea la introspección (__schema, __type…) y las consultas con más de 10 niveles de anidación.
Inyección de prompts
En las rutas que contienen /ai/, /search-ai/, /chat/, /assistant/, /copilot/, /api/ai/, /api/chat/ o /api/assistant/: bloquea los cuerpos con frases de jailbreak conocidas en inglés, como «ignore previous instructions», la extracción del prompt de sistema o «developer mode». Para una política completa en tus propios endpoints de IA (detectores en inglés y español, tope de cuerpo, límites por IP y por sesión), usa la protección de endpoints de IA.
Inspección del cuerpo
Los escudos de cuerpo (GraphQL, inyección de prompts, SSRF en JSON) leen hasta 1 MiB de un cuerpo JSON, GraphQL o de endpoint de IA y siempre reenvían el cuerpo entero. No inspeccionan las subidas multipart. Un cuerpo mayor que ese límite se rechaza con 413, salvo que la ruta tenga una excepción del WAF para la regla 10101 (consulta Solución de problemas).