Codificar e Decodificar HTML
Escape caracteres de marcação ou restaure entidades como texto, sem executar HTML.
O que faz e quando usar
Em HTML, alguns caracteres têm papel de marcação. O sinal < pode iniciar uma tag e & pode iniciar uma referência de caractere. Quando queremos exibir esses sinais como texto, precisamos de uma representação que não os confunda com a estrutura naquele contexto; entidades são uma dessas representações.
Como funciona
Escapar substitui caracteres por representações como <, > e &. A substituição de & precisa ser considerada para não confundir entidades já existentes com o conteúdo original. Restaurar faz o caminho de interpretação das entidades, recuperando caracteres. Nesta página, a saída permanece texto, sem executar as tags recuperadas.
Aplicação prática e conferência
Codificação depende de contexto. Um escape para texto HTML não é automaticamente apropriado para JavaScript, CSS ou URL. Decodificar também pode recuperar sinais perigosos se outra aplicação depois inserir a saída como HTML ativo. Por isso escape e sanitização não são operações intercambiáveis.
Exemplo resolvido
Entrada: <b>Ana & Bia</b>. Ao escapar, < e > passam a < e >, e & passa a &: <b>Ana & Bia</b>. O objetivo é representar a marcação como texto. Restaurar essa sequência devolve os sinais originais; isso não autoriza inseri-los sem proteção em qualquer página.
Leitura do resultado e erros comuns
Ao escapar <, a saída é <. Escapar essa saída novamente também transforma o & e produz &lt;. Uma única restauração então recupera <, sem chegar ainda ao caractere <. Isso explica a aparência de entidades dentro de entidades quando a codificação é repetida. Encode e decode mudam representação, sem aprovar conteúdo para qualquer uso. O resultado é apresentado como texto nesta página. Se outro programa inserir a versão decodificada como HTML ativo, precisará de tratamento adequado àquele contexto; escape não é um sanitizador universal.
Limitações e cuidados
Não sanitiza qualquer contexto de HTML, JavaScript, CSS ou URL e não verifica a segurança de um fragmento. Decodificar conteúdo escapado pode torná-lo perigoso se outro sistema depois o inserir como HTML. O processamento desta ferramenta é local.