Czym jest IDN?
IDN (Internationalized Domain Name, umiędzynarodowiona nazwa domeny) to nazwa domenowa zawierająca znaki spoza tradycyjnego zestawu ASCII używanego w pierwotnej specyfikacji DNS. IDN umożliwiają tworzenie nazw w rodzimych alfabetach, takich jak chiński (中文.com), arabski (مثال.com), cyrylica (пример.com) i wiele innych.
Dlaczego IDN-y są ważne
Pierwotny DNS zaprojektowano z myślą o użytkownikach języka angielskiego, dlatego nazwy domen ograniczały się do:
- Liter a-z (bez rozróżniania wielkości)
- Cyfr 0-9
- Łączników (nie na początku ani na końcu)
Wykluczało to miliardy osób, których języki nie używają alfabetu łacińskiego. IDN demokratyzują Internet, umożliwiając:
- Adresy w języku użytkownika: Użytkownicy mogą wpisywać URL-e we własnym języku
- Ochronę marki: Firmy mogą zabezpieczać swoje nazwy w wielu skryptach
- Dostępność kulturową: Zmniejsza się bariera uczestnictwa w Internecie
Jak działają IDN-y: związek z Punycode
Infrastruktura DNS rozumie wyłącznie ASCII, dlatego IDN korzystają ze sprytnego systemu kodowania o nazwie Punycode. Podczas rejestracji lub otwierania IDN:
1. Użytkownik wpisuje: 中文.com (po chińsku „chiński”)
2. Przeglądarka koduje: xn--fiq228c.com (reprezentacja Punycode)
3. DNS rozwiązuje nazwę: Standardowe wyszukiwanie ASCII
4. Przeglądarka wyświetla: 中文.com (postać pierwotna)
Prefiks „xn--” wskazuje ciąg zakodowany w Punycode. Dla użytkownika proces ten odbywa się przezroczyście.
Przykłady Punycode
| IDN | Punycode |
|---|---|
| münchen.de | xn--mnchen-3ya.de |
| 中文.com | xn--fiq228c.com |
| правда.рф | xn--80aafi6cg.xn--p1ai |
Obsługa IDN w różnych TLD
Obsługa IDN różni się w zależności od TLD:
Pełna obsługa
Większość współczesnych gTLD i wiele ccTLD obsługuje IDN:
- .com, .net, .org (Verisign)
- .de (znaki niemieckie)
- .jp (znaki japońskie)
- .cn (znaki chińskie)
Umiędzynarodowione TLD
Niektóre TLD same są zapisane jako IDN:
- .рф (Rosja, cyrylica)
- .中国 (Chiny)
- .भारत (Indie, dewanagari)
- .السعودية (Arabia Saudyjska, arabski)
Ograniczona obsługa lub jej brak
Niektóre TLD ograniczają IDN albo w ogóle ich nie obsługują. Zawsze sprawdzaj obsługę IDN dla docelowego TLD.
Kwestie bezpieczeństwa: ataki homograficzne
IDN wprowadzają ryzyko bezpieczeństwa przez ataki homograficzne, w których podobne wizualnie znaki z różnych skryptów tworzą mylące domeny:
apple.com (legitimate - Latin letters)
аpple.com (attack - Cyrillic 'а' looks like Latin 'a')
Ochrona przed atakami homograficznymi
Zachowanie przeglądarek: Nowoczesne przeglądarki wyświetlają Punycode dla podejrzanych IDN zamiast postaci Unicode, ujawniając próbę podszycia. Zasady rejestrów: Niektóre rejestry ograniczają zestawy znaków, które można łączyć w jednej domenie. Monitorowanie domen: Narzędzia takie jak wykrywanie typosquattingu DomScan mogą identyfikować zarejestrowane homograficzne warianty marki.Implementacja obsługi IDN
Dla programistów tworzących narzędzia domenowe:
Walidacja
// Check if domain contains non-ASCII
function isIDN(domain) {
return /[^\x00-\x7F]/.test(domain);
}
Konwersja
// Convert to Punycode for DNS queries
const punycode = require('punycode/');
const ascii = punycode.toASCII('中文.com'); // xn--fiq228c.com
const unicode = punycode.toUnicode('xn--fiq228c.com'); // 中文.com
Zapytania RDAP
Większość serwerów RDAP akceptuje obie postacie:
# Both work
curl "https://rdap.verisign.com/com/v1/domain/xn--fiq228c.com"
curl "https://rdap.verisign.com/com/v1/domain/中文.com"
Najlepsze praktyki
Podczas pracy z IDN:
1. Zawsze przechowuj i przetwarzaj wewnętrznie postać Punycode
2. Użytkownikom wyświetlaj postać Unicode
3. W funkcjach bezpieczeństwa wdrażaj wykrywanie homografów
4. Przed rejestracją sprawdzaj zasady IDN właściwe dla danego TLD