¿Qué es un IDN?
Un IDN (Nombre de Dominio Internacionalizado) es un nombre de dominio que contiene caracteres fuera del conjunto ASCII tradicional utilizado en la especificación DNS original. Los IDN permiten nombres de dominio en scripts nativos como chino (中文.com), árabe (مثال.com), cirílico (пример.com) y muchos otros.
Por qué los IDN son importantes
El DNS original fue diseñado para hablantes de inglés, limitando los nombres de dominio a:
- Letras a-z (sin distinción de mayúsculas y minúsculas)
- Números 0-9
- Guiones (no al principio o final)
Esto excluyó a miles de millones de personas cuyos idiomas no utilizan el alfabeto latino. Los IDN democráticos el internet al permitir:
- Direcciones en idioma nativo: Los usuarios pueden escribir URL en su propio idioma
- Protección de marca: Las empresas pueden asegurar sus nombres en múltiples scripts
- Accesibilidad cultural: Reduce la barrera para participación en internet
Cómo funcionan los IDN: La conexión Punycode
La infraestructura DNS solo entiende ASCII, por lo que los IDN utilizan un sistema de codificación inteligente llamado Punycode. Cuando registra o accede a un IDN:
1. Usuario escribe: 中文.com (chino para "chino")
2. Navegador codifica: xn--fiq228c.com (representación Punycode)
3. DNS resuelve: Búsqueda ASCII estándar
4. Navegador muestra: 中文.com (forma original)
El prefijo "xn--" indica una cadena codificada en Punycode. Esto sucede de forma transparente para los usuarios.
Ejemplos de Punycode
| IDN | Punycode |
|---|---|
| münchen.de | xn--mnchen-3ya.de |
| 中文.com | xn--fiq228c.com |
| правда.рф | xn--80aafi6cg.xn--p1ai |
Soporte IDN en todos los TLD
El soporte IDN varía según el TLD:
Soporte completo
La mayoría de gTLD modernos y muchos ccTLD soportan IDN:
- .com, .net, .org (Verisign)
- .de (caracteres alemanes)
- .jp (japonés)
- .cn (chino)
TLD internacionalizados
Algunos TLD son en sí mismos IDN:
- .рф (Rusia, cirílico)
- .中国 (China)
- .भारत (India, Devanagari)
- .السعودية (Arabia Saudí, árabe)
Soporte limitado o inexistente
Algunos TLD restringen IDN o no los soportan en absoluto. Siempre verifique el soporte IDN para su TLD objetivo.
Consideraciones de seguridad: Ataques de homografía
Los IDN introducen riesgos de seguridad a través de ataques de homografía, donde caracteres visualmente similares de diferentes scripts crean dominios engañosos:
apple.com (legítimo - letras latinas)
аpple.com (ataque - 'а' cirílico se parece a 'a' latino)
Ambos se muestran idénticamente pero son dominios diferentes.
Protecciones contra ataques de homografía
Comportamiento del navegador: Los navegadores modernos muestran Punycode para IDN sospechosos en lugar de la forma Unicode, revelando el ataque. Políticas de registro: Algunos registros restringen qué conjuntos de caracteres pueden combinarse en un solo dominio. Monitoreo de dominio: Herramientas como la detección de typosquatting de DomScan pueden identificar variantes de homografía registradas de su marca.Implementación de soporte IDN
Para desarrolladores que construyen herramientas de dominio:
Validación
// Comprobar si el dominio contiene no ASCII
function isIDN(domain) {
return [...domain].some(char => char.charCodeAt(0) > 127);
}
Conversión
// Convertir a Punycode para consultas DNS
const punycode = require('punycode/');
const ascii = punycode.toASCII('中文.com'); // xn--fiq228c.com
const unicode = punycode.toUnicode('xn--fiq228c.com'); // 中文.com
Consultas RDAP
La mayoría de servidores RDAP aceptan ambas formas:
# Ambos funcionan
curl "https://rdap.verisign.com/com/v1/domain/xn--fiq228c.com"
curl "https://rdap.verisign.com/com/v1/domain/中文.com"
Mejores prácticas
Al trabajar con IDN:
1. Siempre almacene y procese la forma Punycode internamente
2. Muestre la forma Unicode a los usuarios
3. Implemente detección de homografía para características de seguridad
4. Verifique políticas IDN específicas de TLD antes del registro