Hogyan lehet konvertálni a nemzetköziesített domainneveket Punycode segítségével?
A Punycode egy szabványosított kódolási módszer, amely lehetővé teszi az Unicode karakterek korlátozott ASCII karakterkészlet segítségével történő leképezését, ami azt jelenti, hogy a nemzetköziesített domainnevek (IDN) nem ASCII karaktereket is tartalmazhatnak, például umlautokat.
Hogyan fejlesztették ki a kódolási módszert?
2003-ban a Punycode-ot az Internet Engineering Task Force (IETF) szabványosította az alkalmazásokban használt nemzetköziesített domainnevek (IDNA) kódolásának szintaxisként. Az IETF akkor definiál egy domain nevet IDN-ként, ha az olyan speciális karaktereket tartalmaz, mint diakritikus jelek, betűk vagy karakterek, amelyek nem találhatók meg a latin ábécében (pl. umlautok a német nyelvben). Az ilyen karaktereket az alapvető protokollok, mint például a Domain Name System (DNS), nem tudják feldolgozni. Ebben a példában egy német nyelvű domain nevet fogunk használni. Bár az IDN-ek bevezetése óta a müller-büromöbel (Müller irodabútorok) megengedett a .de felső szintű domain alatt, csak a nem alapszimbólumok kódolásával lehet feldolgozni, például a névfeloldás során. Számos internetes protokoll angol nyelven alapul, ezért csak a korlátozott ASCII karakterkészletet támogatja.
Az IDN-ek és a régebbi internetes szabványok közötti kompatibilitás biztosítása érdekében az IETF előírta a nemzetköziesített domainnevek kódolásának módszerét a már engedélyezett karakterek felhasználásával. Ez a szabványosított kódolási eljárás Punycode néven ismert.
Az e-mail címek esetében a Punycode csak a nemzetköziesített e-mail domaineknél használatos. Ha a helyi rész (az @ karakter előtt) nem ASCII karaktereket tartalmaz, akkor UTF-8 kódolással kerül kódolásra.
Hogyan működik a Punycode kódolás?
A Punycode folyamat áttekintése
A Punycode-ot az IETF az RFC 3492-ben a Bootstring néven ismert általános kódolási algoritmus lehetséges alkalmazásaként határozza meg. A Bootstring algoritmus lehetővé teszi a tetszőleges karakterkészleteket tartalmazó karakterláncok leképezését korlátozott elemválasztékkal. A kódolási eljárás kidolgozása hat alapelvre épül. A Punycode kódolásban ezeket az elemeket alapkaraktereknek nevezik, amelyek kisbetűkből, számokból és kötőjelből (- ) állnak. A kódolási módszer kidolgozása hat alapelvre épül.
- Teljesség: Minden kimeneti karakterlánc egy egyszerűsített karakterlánchoz rendelhető egy boot string segítségével.
- Egyediség: A kimeneti karakterlánc hozzárendelése a megfelelő Bootstring kódoláshoz egyedülálló. Minden Punycode-hoz pontosan egy ASCII-megfelelő rendelhető, és fordítva.
- Visszafordíthatóság: A Bootstring kódolás bármikor visszafordítható információvesztés nélkül.
- Hatékonyság: A kódolt karakterlánc – ha egyáltalán – csak minimálisan hosszabb, mint a kimeneti karakterlánc.
- Egyszerűség: A Bootstring egyszerű kódolási és dekódolási algoritmusokat használ.
- Olvashatóság: Csak azok a karakterek kerülnek kódolásra, amelyek nem ábrázolhatók a cél karakterkészletben. Az összes többi karakter változatlan marad.
A Punycode a Bootstringet a nemzetköziesített domainnevekre vonatkozó követelményeknek megfelelően határozza meg. Ez lehetővé teszi az Unicode karakterek leképezését a korábban engedélyezett alapkarakterek segítségével.
Punycode példa
Az alábbi példa bemutatja, hogyan működik a kódolás:
IDN: müller-büromöbel
Az IDN müller-büromöbel tartalmazza az ü és ö karaktereket, amelyek nem szerepelnek a domainnevekhez korábban engedélyezett karakterkészletben. Ezért kompatibilitásuk biztosítása érdekében Punycode segítségével kell kódolni őket.
1. lépés: Normalizálás
Az első lépésben a kódolási eljárás lehetővé teszi a kimeneti karakterlánc normalizálását. Az összes nagybetű helyébe a megfelelő kisbetű kerül.
2. lépés: Az összes nem alapvető karakter eltávolítása
A második lépésben minden nem alapvető karaktert eltávolítunk. Ezeket aztán kódolt formában hozzáadjuk a domain névhez, és kötőjellel elválasztjuk egymástól.
Ha a Punycode szintaxist használják az internetcímek kódolására, akkor minden eredmény karakterlánc ACE előtaggal ( ASCII-kompatibilis kódolás rövidítése) rendelkezik:
ACE előtag: xn–
Az ACE előtag biztosítja, hogy a kötőjelet tartalmazó domainnevek ne legyenek tévesen értelmezve nemzetközi domainnevekként.
Ez az IDN müller-büromöbel következő kódolását eredményezi:
ACE: xn–mller-brombel-rmb4fg
A Punycode eljárás alapjául szolgáló algoritmus figyelemre méltó. Biztosítja, hogy a konverzió ellenére a domainnevek ne haladják meg a 63 karakteres maximális hosszúságot.
A kódolási folyamat során az Unicode karakterek nem kerülnek egy az egyben ASCII karakterekké konvertálásra. Ehelyett az algoritmus a törölt karakterek közötti távolság és a kimeneti karakterláncban elfoglalt pozíciójuk alapján határozza meg a karakterláncot.
A fenti példához kapcsolódóan az rmb4fg karakterlánc azt jelzi, hogy az mller-brombel szót a második és a hetedik pozícióban az ü és ö Unicode karakterekkel kell kiegészíteni.

A szabály alóli kivételek
Eltérés akkor fordul elő, ha a domainnév nem tartalmaz nem alap karaktereket, vagy csak nem alap karaktereket tartalmaz.
A kizárólag nem alap karaktereket tartalmazó domain név kódolás után csak a kódolt karakterláncot és az ACE előtagot jeleníti meg. Az olyan domain név, mint például το παράδειγμα (görögül „példa”), a következő kódolásnak felel meg:
IDN: példa
ACE: xn–hxajbheg2az3al
Ha egy domainnév csak alapkaraktereket tartalmaz, akkor a Punycode nem kerül alkalmazásra. Ennek megfelelően nem kerül hozzá ACE előtag. Ebben az esetben nincs szükség kódolásra, mert az alapvető internetes protokollok már képesek értelmezni a domainnevet.
Ha a teljes domainnevet (FQDN) egészében tekintjük, akkor minden címke (felső szintű domain, másodszintű domain, harmadszintű domain stb.) külön kódolásra kerül. Egyolyan domain*, mint például пример.бг* (bolgárul „example.bg”), a következőképpen kódolható
IDN: пример.бг
ACE: xn–e1afmkfd.xn–90ae
Az alábbi táblázat áttekintést ad a Punycode szintaxis különböző változatáról.
| IDN | Punycode | ACE | |
|---|---|---|---|
| Alap- és nem alap karakterek | müller-büromöbel.de
|
mller-brombel-rmb4fg.de
|
xn--mller-brombel-rmb4fg.de
|
| Csak nem alap karakterek | Παράδειγμα.gr
|
hxajbheg2az3al.gr
|
xn--hxajbheg2az3al.gr
|
| Csak alap karakterek | example.org
|
example.org
|
Nincs használata |
A Punycode algoritmus részletes leírása az RFC 3492 dokumentumban található. Ezenkívül a dokumentum tartalmazza a kódolási eljárás C programozási nyelven történő megvalósítását is.
A felhasználók általában szabadon elérhető Punycode-konverterekhez folyamodnak a nemzetköziesített domainnevek kódolásához.
Puny kódolás emoji domainnel
A Punycode segítségével nemcsak nemzetköziesített domainnevek, hanem emoji domainnevek is létrehozhatók. Ahhoz azonban, hogy ez működjön, a legfelső szintű domainnek engedélyeznie kell az emojik használatát, és a kívánt hangulatjelnek az Unicode szabványban kell szerepelnie.
Jelenleg a következő TLD-k engedélyezik az emoji domainnevek regisztrációját: .ws, .tk, .to, .ml, .ga, .cf, .gq és .fm.
Az emoji domainnevek technikailag Punycode formátumban kerülnek feldolgozásra, de elvileg a felhasználó számára szöveg és hangulatjelek kombinációjaként kell megjelenniük.
Emoji domain: https://i❤.ws/
ACE: https://xn--i-7iq.ws/
Jelenleg gyakorlatilag egyetlen szabványos böngésző sem implementálja ezt. Ha emoji domaint ír be a Firefox, Chrome, Safari, Edge vagy Opera böngészőbe, a címsor csak az ACE karakterláncot jeleníti meg.
Vannak ingyenes Punycode-konverterek?
Az IDN-eket ASCII-kompatibilis formátumba átalakító ingyenes Punycode generátorok számos weboldalon megtalálhatók. Egy példa erre a Punycoder.

Más TLD-k IDN-jei esetében Mathias Bynens punycode.js alapú Punycode konverterje jó választás.

A Punycode biztonsági kockázatot jelent?
A Punycode biztonsági kockázatot jelent a homográf phishing esetében – olyan kibertámadásoknál, ahol a bűnözők különböző karakterek hasonló megjelenését használják fel arra, hogy gyanútlan áldozatokat csaljanak hamis weboldalakra. A blogger Xudong Zheng a következő Punycode domain https://www.xn--80ak6aa92e.com/ példáján mutatja be, hogyan néz ki egy phishing támadás. Ez az internethasználókat a következő IDN-nel rendelkező weboldalra vezeti: https://www.аррӏе.com/
A megadott URL nem a kaliforniai technológiai vállalat, az Apple Inc. hivatalos weboldala, hanem bemutató célokra létrehozott adathalász weboldal.
Az ASCII karakter a helyett a Unicode U+0061 karaktert, a cirill а (U+0430) karaktert használják – ezeket a két karaktert szabad szemmel alig lehet megkülönböztetni, de a böngészők különböző karakterként értelmezik őket. Még a tanúsítványok sem tudnak biztonságot nyújtani az internethasználók védelmére. A modern adathalász kampányok során a bűnözők érvényes SSL-tanúsítványokat hoznak létre azzal a céllal, hogy webhelyeik hitelesnek tűnjenek.
A Chrome és az Opera jelenlegi verziói megakadályozzák az ilyen típusú adathalász támadásokat azzal, hogy az IDN-eken, amelyek különböző karakterkészletekből származó karaktereket kevernek, az ACE karakterláncot jelenítik meg a nemzetköziesített domain helyett. Az Internet Explorer és a Microsoft Edge megakadályozza az ilyen domainok elérését. A Firefox azonban nem nyújt védelmet a Punycode adathalászat ellen.

Így védhetik meg magukat a Firefox felhasználók. A phishing webhelyek jelentette kockázat csökkentése érdekében a Firefox felhasználók jelenleg csak azt a lehetőséget választhatják, hogy általában megakadályozzák a Punycode IDN-ekké történő átalakítását. Ehhez az ideiglenes megoldáshoz csak két lépés szükséges:
- Nyissa meg a konfigurációs szerkesztőt: Írja be az about:config parancsot a böngésző címsorába, hogy megnyissa a Firefox konfigurációs szerkesztőjét.
- Punycode kényszerítése: Keresse meg a network.IDN_show_punycode beállítást, és változtassa meg az értékét false-ról true-ra.
A konfigurálás után a Firefox a nemzetközi domainnevek ACE-karaktersorozatként jelennek meg a címsorban.