Guias de domínios

O que é Punycode?

Explicação completa sobre Punycode, sua relação com nomes de domínio internacionalizados, a conversão de caracteres não ASCII e possíveis riscos de segurança.

3min de leituraAtualizado2026-06-22

Punycode é um sistema de codificação usado para representar caracteres não ASCII na Internet. Sua principal finalidade é converter caracteres não ASCII em caracteres ASCII puros, permitindo que sejam resolvidos e processados normalmente dentro do Sistema de Nomes de Domínio (DNS).


Como o sistema original de nomes de domínio foi projetado em torno do conjunto de caracteres ASCII, ele não conseguia lidar diretamente com caracteres não ASCII, como caracteres chineses, letras cirílicas ou letras gregas. Para permitir o uso de nomes de domínio contendo caracteres não ASCII na Internet, o Punycode foi introduzido.


O Punycode utiliza um algoritmo de codificação baseado em caracteres ASCII. Ele converte sequências de caracteres não ASCII em um prefixo ASCII que começa com "xn--", seguido por uma série de caracteres ASCII. Dessa forma, esses nomes de domínio podem ser tratados dentro do sistema DNS existente.


Por exemplo, suponha que exista um nome de domínio com caracteres não ASCII, como "范例.com". Por meio da codificação Punycode, ele seria convertido em "xn--fsqr86j.com". Assim, o sistema DNS consegue resolver corretamente esse nome de domínio.


A codificação e a decodificação de Punycode são realizadas por meio de um algoritmo específico e podem ser executadas com ferramentas ou bibliotecas correspondentes de codificação e decodificação.


Histórico e princípios do Punycode

Punycode é um esquema de codificação baseado em ASCII, criado para converter caracteres não ASCII em caracteres ASCII para processamento dentro do sistema de nomes de domínio. Ele emprega um algoritmo específico que converte sequências de caracteres não ASCII em um prefixo ASCII iniciado por "xn--", seguido de uma série de caracteres ASCII. Esse método preserva a semântica do nome de domínio original e, ao mesmo tempo, garante compatibilidade com o sistema DNS existente.


Aplicações do Punycode

Punycode é amplamente usado em nomes de domínio internacionalizados (IDNs), permitindo que nomes de domínio com caracteres não ASCII funcionem normalmente na Internet. Ele desempenha papel crucial na resolução de nomes de domínio, em e-mail, URLs e outros identificadores de rede em ambientes multilíngues. Com a codificação Punycode, usuários podem criar nomes de domínio em seus próprios idiomas e conjuntos de caracteres, facilitando a interação contínua com a Internet global.


Processo de codificação e decodificação do Punycode

O processo de codificação Punycode envolve converter caracteres não ASCII em seus pontos de código Unicode e depois realizar uma série de transformações e operações de compressão para gerar a sequência correspondente de caracteres ASCII. O processo de decodificação é o inverso da codificação, convertendo a sequência ASCII codificada de volta para os caracteres não ASCII originais.


Questões de segurança do Punycode

Devido à grande quantidade de idiomas no mundo, a entrada de vários caracteres nos nomes de domínio inevitavelmente gera alguns problemas, como ataques de phishing.


Muitos caracteres Unicode, que representam letras gregas, eslavas, armênias e de outros alfabetos em nomes de domínio internacionalizados, parecem semelhantes a letras latinas, mas são processados pelos computadores como endereços web totalmente diferentes. Por exemplo, a letra eslava “а” (U+0430) e a letra latina “a” (U+0041) são tratadas pelos navegadores como caracteres diferentes, embora ambas sejam exibidas como “a” na barra de endereço. Como alguns navegadores antigos não exibiam os nomes de domínio codificados em Punycode na barra de endereço, isso criou muitos nomes de domínio confusos e pouco claros.


Essa vulnerabilidade não durou muito. Pouco depois de sua divulgação, os fornecedores afetados corrigiram o problema em atualizações posteriores.