Lección 3

Entidades en CMS y plantillas

Cuándo escapar nodos de texto, atributos y campos exportados.

Las plataformas CMS y motores de plantillas a menudo escapan contenido automáticamente — pero no siempre en la capa que esperas.

Nodos de texto vs atributos

Para nodos de texto HTML, los escapes críticos suelen ser <, > y &.

Para valores de atributo, también necesitas comillas escapadas cuando el atributo va delimitado por " o '. Un valor como He said "hi" dentro de title="..." rompe el atributo a menos que las comillas estén codificadas.

Trampas de doble codificación

Una cadena de bug habitual:

  1. El CMS almacena Tom &amp; Jerry (ya escapado)
  2. Un motor de plantillas escapa de nuevo → Tom &amp;amp; Jerry
  3. La página muestra texto literal &amp; en lugar de &

Corrección: escapa una vez, en el límite donde entra texto no confiable en HTML. Si los datos ya están codificados como entidad, decodifica o márcalos como seguros antes del siguiente paso de escape.

Rich text vs campos planos

Los editores rich-text pueden emitir fragmentos HTML con entidades ya embebidas. Los campos de texto plano pueden necesitar escape completo en la salida. Mezclar ambos en un pipeline causa visualización inconsistente.

Email y formatos de exportación

Las exportaciones CSV, APIs JSON y plantillas de email a menudo codifican entidades para compatibilidad XML/HTML. Cuando importas esos datos en una página web, verifica si el consumidor espera texto crudo o HTML previamente escapado.

Autoescape de frameworks

React, Vue y sistemas de plantillas modernos escapan por defecto cuando usas sus APIs de interpolación de texto. dangerouslySetInnerHTML o bloques de plantilla crudos omiten esa protección — entidades y sanitización pasan a ser tu responsabilidad.

Volver al resumen del curso