Codificação URL vs Codificação HTML
Codificação URL e codificação HTML são ambas técnicas de escape mas servem propósitos diferentes e não são intercambiáveis. Usar a errada pode causar tanto bugs funcionais quanto vulnerabilidades de segurança. Este guia esclarece as diferenças.
Codificação URL
Codificação URL (codificação de porcentagem) é para transmitir dados em URLs. Converte caracteres para formato %XX. Aplicado a: Valores de parâmetro de consulta, componentes de caminho, identificadores de fragmento. Caracteres especiais codificados: Espaço → %20, & → %26, = → %3D, ? → %3F, # → %23, / → %2F (em valores, não estrutura). Propósito: Prevenir interpretação incorreta de caracteres especiais como delimitadores URL. Permitir caracteres não-ASCII em URLs. Garantir dados sobrevivam transmissão URL intactos. Exemplo: Parâmetro de pesquisa "café & bolo" → ?search=caf%C3%A9%20%26%20bolo
Codificação HTML
Codificação HTML (entidades HTML) é para exibir dados em HTML. Converte caracteres para formato &name; ou &#num;. Aplicado a: Conteúdo HTML, valores de atributo, texto exibido em páginas web. Caracteres especiais codificados: < → <, > → >, & → &, " → ", ' → '. Propósito: Prevenir injeção HTML/XSS. Garantir caracteres especiais apareçam como texto, não como marcação HTML. Exibir caracteres especiais que navegadores de outra forma interpretariam. Exemplo: Exibir "<script>alert('xss')</script>" com segurança → <script>alert('xss')</script>
Quando Usar Qual
Use codificação URL quando: Construindo URLs ou strings de consulta. Adicionando parâmetros a links. Enviando dados em requisições GET. Criando URLs para APIs. Use codificação HTML quando: Inserindo dados em conteúdo HTML. Definindo valores de atributo. Exibindo entrada de usuário em páginas. Prevenindo ataques XSS. Use ambos quando: Criando links HTML com parâmetros dinâmicos. Primeiro codifique por URL os valores de parâmetro, então codifique por HTML o atributo href inteiro. Exemplo: <a href="/search?q=<?php echo htmlspecialchars(urlencode($query)); ?>">. Primeiro urlencode() para URL, então htmlspecialchars() para HTML. Nunca substitua um pelo outro—causam falhas de segurança e bugs funcionais.
Testar a Ferramenta
Codificador/Decodificador URL