# AX-SYS-22: Nunca confíes en el marcado generado por agentes en contextos sensibles

> Observability and governance · advanced · AX-SYS-22

Trata el HTML o los scripts producidos por un agente como entrada no confiable, y renderízalos de forma segura para evitar inyección y cross-site scripting.

## Por qué

Que los agentes emitan HTML sin procesar dentro del contexto de una página confiable es un vector directo de XSS. Es la misma clase de ataque fundamental que OWASP A03 (Inyección), aplicada al contenido generado por IA: la salida de un modelo no determinista no puede tratarse como segura. La salida del agente es una superficie conocida de inyección indirecta de prompts: el contenido no confiable que regresa a una página confiable puede transportar marcado hostil. El proyecto A2UI de Google se diseñó precisamente para abordar esto. En lugar de renderizar HTML sin procesar de los agentes, hace que estos emitan una descripción JSON declarativa de componentes de interfaz extraídos de un catálogo confiable, que el cliente asigna a sus propios widgets nativos, de modo que nunca se ejecuta código generado por el agente en el contexto de renderizado.

## Haz

Sanea el contenido o usa un protocolo de renderizado seguro.

## No hagas

Inyectar HTML producido por un agente en una página confiable.

## Artefacto

```js
// Never render agent-produced HTML directly into a trusted page.
// Bad:  element.innerHTML = agentOutput        // injection / XSS
// Bad:  <div dangerouslySetInnerHTML={{__html: agentOutput}} />
// Good: render through a sanitizer with a strict allowlist,
//       or a structured UI spec (for example Google's A2UI), not raw HTML.
const safe = sanitize(agentOutput, { allowedTags: ["b","i","a","p","ul","li","code"] });
```

## Fuentes

1. [OWASP Top 10 — A03: Injection / Cross-Site Scripting](https://owasp.org/www-project-top-ten/) — Injecting untrusted input directly into the DOM is the foundational XSS attack class; agent-produced HTML is untrusted input by definition and must be sanitized before rendering
2. [arxiv:2603.30016 — Architecting Secure AI Agents](https://arxiv.org/abs/2603.30016) — Agents emitting HTML or scripts that are rendered in a trusted page context create injection and XSS vectors; system-level structural separation of agent output from the trusted rendering context is required
3. [Google — Introducing A2UI: an open project for agent-driven interfaces](https://developers.googleblog.com/introducing-a2ui-an-open-project-for-agent-driven-interfaces/) — A2UI has agents emit a declarative JSON description of UI components from a trusted catalog rather than HTML or JavaScript, so no agent-generated code is executed in the rendering context

---
Source: Agent Experience Principles (axprinciples.com)