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:
- CMS armazena
Tom & Jerry(já escapado) - Template engine escapa de novo →
Tom &amp; Jerry - A página mostra texto literal
&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.