O que é Codificador/Decodificador de Entidades HTML?

Um codificador/decodificador de entidades HTML converte caracteres especiais como <, >, & e aspas para os seus equivalentes em entidades HTML (e vice-versa). Isso previne vulnerabilidades XSS ao incorporar conteúdo do usuário em HTML e corrige problemas de exibição de caracteres especiais.

O codificador converte caracteres como <, >, &, ", ' e qualquer ponto de código Unicode em entidades nomeadas (&amp;, &lt;), referências decimais (&#38;) ou hexadecimais (&#x26;). Um seletor de escopo permite codificar apenas os cinco caracteres reservados, todos os caracteres especiais ou cada caractere não-ASCII. A decodificação reverte qualquer um dos três formatos. Útil para sanitizar entradas de usuário em HTML ou recuperar texto de exportações de e-mail HTML.

Como usar

  1. Passo 1 — Cole o texto contendo caracteres especiais ou entidades HTML.
  2. Passo 2 — Escolha Codificar para converter caracteres em entidades, ou Decodificar para converter entidades de volta em caracteres.
  3. Passo 3 — Escolha um formato (Nomeado, Decimal ou Hex) e um escopo para controlar a intensidade da codificação.

Quando usar

  • Colar exemplos de código num CMS sem que < e > sumam interpretados como tags.
  • Limpar texto vindo de e-mails HTML ou scraping que ainda traz &mdash; e &nbsp;.
  • Escapar a entrada do usuário antes de injetar em template no servidor para barrar XSS.

Resultado

Você precisa exibir o trecho de código <div class="hero"> dentro de um parágrafo HTML. Codifique-o para &lt;div class=&quot;hero&quot;&gt; para que o dispositivo renderize o texto em vez de interpretá-lo como marcação.

Perguntas frequentes

Qual a diferença entre entidades nomeadas e numéricas?
Nomeadas usam atalhos legíveis (&copy; para ©). Numéricas usam o ponto Unicode (&#169; ou &#xA9;). As numéricas funcionam para qualquer Unicode; as nomeadas cobrem cerca de 250 caracteres definidos pelo HTML5.
Preciso codificar todos os caracteres especiais ou só alguns?
No corpo HTML, basta codificar & < > e a aspa usada em atributos. Em contextos JavaScript ou URL as regras mudam. O seletor de Escopo oferece: Apenas reservados para os cinco caracteres críticos contra XSS, Todos especiais para tipografia além dos reservados, ou Tudo não-ASCII para a cobertura mais abrangente.
Codificar quebra o copiar-colar ou leitores de tela?
Não. O navegador decodifica as entidades antes de pintar o texto, então o usuário vê e copia o caractere original. Leitores de tela recebem também o conteúdo decodificado. Entidades são formato de transporte, não a saída final exibida.
Codificar entidades HTML é suficiente para travar XSS?
Para texto no corpo HTML, sim. Em atributos é preciso entre aspas e codificar a própria aspa. JavaScript, CSS e URLs têm regras de escape próprias. A codificação é a primeira camada, não a defesa inteira.
Por que algumas entidades começam com &#x e outras só &#?
&#x leva um ponto em hexadecimal e &# em decimal. Ambos apontam para o mesmo caractere; &#xA9; e &#169; imprimem ©. Hex bate com a notação U+ do Unicode e fica mais curto para pontos altos.

Ferramentas relacionadas