Como fazer escape de HTML e preservar caracteres

Símbolos reservados precisam ser representados adequadamente ao exibir texto literal em HTML.

O objetivo deste guia é resolver uma tarefa real com critérios claros, e não apenas apertar um botão. Você verá como preparar a entrada, o que observar na saída, erros frequentes e quando vale buscar uma solução complementar. Abrir ferramenta gratuita: escape html.

Escape HTML depende do contexto

Considere a string literal <b>olá</b>. Inserida com innerHTML, ela pode criar uma marcação de negrito; inserida com textContent, aparece como texto. A distinção importa ao exibir comentários, logs ou trechos de código que não devem virar elementos. Entidades como &lt;, &gt; e &amp; representam caracteres reservados no código-fonte. Uma segunda codificação sobre conteúdo já escapado pode fazer entidades aparecerem literalmente no resultado.

O mesmo tratamento não serve para todos os destinos. Conteúdo de texto HTML, valores de atributos, URLs, JavaScript e CSS têm regras diferentes. Em vez de montar HTML com concatenação de dados não confiáveis, prefira APIs DOM e funções próprias do contexto. Ao construir links, valide protocolos e destinos. Um valor seguro para ser exibido como texto não está automaticamente seguro quando é inserido num atributo ou script.

Escape e sanitização resolvem tarefas distintas

Quando uma aplicação precisa aceitar HTML rico enviado por terceiros, escapar tudo pode eliminar a formatação desejada; permitir tudo expõe riscos. Sanitização define elementos, atributos e URLs permitidos, com outras medidas de segurança complementares. Remover apenas uma tag script não resolve todas as formas de XSS. Consulte as orientações de prevenção de XSS da OWASP.

Teste sinais de menor e maior, aspas simples e duplas e e comercial com entradas pequenas. Compare o HTML produzido com o texto efetivamente exibido. Se visualizar &lt; em vez do sinal esperado, investigue dupla codificação. Se o trecho adquirir formatação inesperada, ele pode ter sido interpretado como marcação. Nunca trate Base64 como substituto de escape ou medida de segurança.

O que é e para que serve

Símbolos reservados precisam ser representados adequadamente ao exibir texto literal em HTML. A sequência literal <b>olá</b> deve aparecer como texto se não foi autorizada como marcação. Quando a necessidade envolve outras etapas, não misture resultados que usam regras distintas. Esclareça qual problema deve ser resolvido e quais evidências indicam que a operação funcionou.

Antes de prosseguir, estabeleça como o resultado será usado: leitura pessoal, envio a alguém, publicação no site, documentação ou comparação de alternativas. O destino influencia formato e precisão. Um teste informal permite maior flexibilidade; um resultado destinado a terceiros pede controle de qualidade e registro das escolhas.

Prepare a entrada sem perder informações

Em textos e dados estruturados, aparência e conteúdo nem sempre coincidem. Caracteres invisíveis, espaços, codificações, formatos e normalização podem mudar o significado ou o comportamento de uma aplicação. Testar entradas pequenas e preservar o original é especialmente útil quando a operação alimenta outro sistema.

Reserve o arquivo, texto ou configuração inicial, quando aplicável, e tente primeiro um exemplo pequeno. Confira se há caracteres especiais, valores fora do comum, dados de terceiros e formatos incompatíveis. Quando uma opção da página não estiver clara, leia o rótulo ou a ajuda antes de aplicar ao material completo.

Passo a passo no Ferramentas Flash

  1. Identifique onde a saída aparecerá: texto dentro de HTML, atributo, URL ou outro contexto.
  2. Digite caracteres reservados como menor que, maior que, aspas e e comercial num exemplo pequeno.
  3. Aplique o escape adequado e confira se o código resultante representa corretamente os caracteres literais.
  4. Renderize a saída como texto e verifique se nenhuma sequência virou tag ou comportamento inesperado.
  5. Teste um valor já escapado para identificar dupla codificação e prefira textContent em interfaces com dados de terceiros.

Exemplo prático explicado

Uma pessoa envia o comentário literal “<b>olá</b>”. Se um programa atribuir essa entrada a innerHTML, o navegador pode transformá-la numa tag de negrito. Se usar textContent, os caracteres aparecem como foram digitados, sem virar marcação. Num arquivo HTML manual, representar menor que por &lt; permite exibir o sinal em vez de iniciar tag. Faça um segundo teste com uma entidade já escrita como &amp;lt;; se escapar de novo, o usuário poderá ver o texto da entidade. Esse exemplo cobre o contexto de texto HTML, não substituindo tratamento apropriado de URLs, scripts ou HTML rico permitido.

Erros comuns e como evitar

Escape de HTML não substitui sanitização nem tratamento de outros contextos contra XSS.

Outro erro recorrente é confundir uma operação bem-sucedida com garantia de qualidade. Revise tipos de entrada, unidades, codificação, legibilidade, permissões e o destino final. Quando o navegador travar ou o resultado parecer diferente do esperado, reinicie com o menor exemplo possível para localizar o problema.

Não faça mudanças destrutivas no único exemplar do seu material. Arquivos e dados são mais fáceis de recuperar quando a versão original foi preservada. Se você publicar ou compartilhar a saída, verifique se não incluiu inadvertidamente dados pessoais, identificadores internos ou informações que deveriam permanecer privadas.

Ferramentas relacionadas

Estas opções podem ajudar na preparação ou conferência, dependendo da tarefa. Use apenas as que forem relevantes, sem criar etapas artificiais.

Perguntas frequentes

Quando usar textContent em vez de innerHTML?

Quando o valor deve ser exibido como texto, sem interpretação de tags.

Escape HTML resolve todo risco de XSS?

Não. Proteção exige tratamento adequado ao contexto e eventualmente sanitização.

Por que aparecem entidades como &amp;lt; na tela?

Pode haver dupla codificação ou inserção num contexto inadequado.

Conclusão

Símbolos reservados precisam ser representados adequadamente ao exibir texto literal em HTML. Escape de HTML não substitui sanitização nem tratamento de outros contextos contra XSS. Comece por um exemplo pequeno, revise as condições e utilize o resultado apenas depois de conferir a finalidade. O ganho de tempo é maior quando a automação preserva a qualidade, a segurança e a possibilidade de corrigir erros.

Usar a ferramenta gratuitamente →

Fontes e referências

Autor: Luís Concolato · Revisão: 9 de outubro de 2026. Material educativo; resultados dependem da aplicação e precisam de conferência.