ai_agents.endpoints protege hasta 20 endpoints de IA propios, como /api/chat. En cada petición a la ruta de un endpoint, el borde lee el cuerpo (y lo reenvía intacto), pasa 27 detectores deterministas en inglés y español, revisa los parámetros de gasto y aplica límites por IP y por sesión. Para servidores MCP, usa MCP Shield.
Qué se detecta
- Inyección: anulación de instrucciones, extracción del prompt de sistema, personajes de jailbreak («DAN», «developer mode»), avisos falsos de sistema o de cumplimiento, tokens de plantilla de chat (
<|im_start|>), tramos de caracteres de ancho cero, comentarios HTML con órdenes, base64 que decodifica a órdenes y patrones de exfiltración (curl … | sh,env | grep KEY). - Límites de coste (denial of wallet): más de 65 536 tokens de salida (
max_tokensy equivalentes), más de 8 respuestas (n,best_of…), más de 1000 mensajes o más de 128 herramientas.
Cada detección se registra como {id, label, snippet}, con un fragmento de como mucho 160 bytes de la petición, que el panel y la CLI enseñan como texto plano.
Campos de un endpoint
| Campo | Reglas |
|---|---|
path_prefix | Empieza por /, como mucho 256 bytes, único. |
methods | Cualquiera de POST, PUT, PATCH, GET. |
max_body_bytes | 1–1 048 576. Un cuerpo mayor es una violación de límite. |
rpm_per_ip | Peticiones por minuto y por IP; 0 = sin límite; como mucho 100 000. |
rpm_per_session | Peticiones por minuto y por sesión; 0 = sin límite; como mucho 100 000. |
session_header / session_cookie | De dónde sale el valor de la sesión. |
injection_action | log o block. |
limit_action | log o block, para los límites de ritmo, tamaño y coste. |
Respuestas en modo aplicar
| Violación | Respuesta |
|---|---|
Por encima de rpm_per_ip o rpm_per_session | 429 {"error":"rate limit exceeded"} con Retry-After |
Cuerpo mayor que max_body_bytes | 413 {"error":"request body too large"} |
| Inyección detectada | 403 {"error":"request rejected"} |
| Límite de coste superado | 400 {"error":"request exceeds cost limits"} |
En modo log, o con la acción log, la petición sigue y se registra un evento injection o cost_limit.
Añadir un endpoint
Control de rastreadores IA → Endpoints de IA.
openwaf-cloud ctl zones set example.com ai_agents.endpoints:='[{"path_prefix":"/api/chat","methods":["POST"],
"max_body_bytes":32768,"rpm_per_ip":30,"rpm_per_session":0,"session_header":"","session_cookie":"",
"injection_action":"block","limit_action":"log"}]' --reason "Proteger la API de chat"PATCH …/edge con {"ai_agents": {"endpoints": [...]}}; la lista se sustituye entera.
ai_agents_settings con "patch": {"endpoints": [...]}.
El informe Endpoints de IA (--view endpoints) enseña las inyecciones, los límites, los bloqueos y las detecciones de cada endpoint.