Lição 3

Entities em CMS e templates

Quando escapar text nodes, attribute values e campos exportados.

Plataformas CMS e template engines frequentemente escapam conteúdo automaticamente — mas nem sempre na camada que você espera.

Text nodes vs attributes

Para text nodes HTML, os escapes críticos são geralmente <, > e &.

Para attribute values, você também precisa escapar aspas quando o attribute é delimitado por " ou '. Um valor como He said "hi" dentro de title="..." quebra o attribute a menos que as aspas sejam codificadas.

Armadilhas de double encoding

Uma cadeia de bug comum:

  1. CMS armazena Tom &amp; Jerry (já escapado)
  2. Template engine escapa de novo → Tom &amp;amp; Jerry
  3. A página mostra texto literal &amp; em vez de &

Correção: escape uma vez, na fronteira onde texto não confiável entra no HTML. Se os dados já estão entity-encoded, faça decode ou marque como safe antes do próximo passo de escape.

Rich text vs campos plain

Editores rich-text podem produzir fragmentos HTML com entities já embutidas. Campos plain-text podem precisar de escape completo no output. Misturar os dois em um pipeline causa exibição inconsistente.

Email e formatos de export

Exports CSV, APIs JSON e templates de email frequentemente fazem entity-encode para compatibilidade XML/HTML. Quando você importa esses dados para uma página web, verifique se o consumidor espera texto bruto ou HTML pré-escapado.

Auto-escape de frameworks

React, Vue e template systems modernos escapam por padrão quando você usa as APIs de interpolação de texto. dangerouslySetInnerHTML manual ou blocos de template raw contornam essa proteção — entities e sanitização passam a ser sua responsabilidade.

Voltar à visão geral do curso