Wat is PunyCode en hoe werkt het bij domeinen?

Auteur: Gepubliceerd

Kort gezegd: Punycode is een manier om Unicode-tekens, zoals de Poolse ‘ł’ of ‘ó’, weer te geven met de basistekens van ASCII. Bij domeinnamen maakt dit het mogelijk om een adres met taalspecifieke letters in een technische vorm weer te geven, herkenbaar aan het voorvoegsel xn--. Zo wordt bücher.de weergegeven als xn--bcher-kva.de — dit zijn twee schrijfwijzen van hetzelfde domein, niet twee afzonderlijke adressen die je kunt registreren.

Waarom hebben domeinen Punycode nodig?

Unicode is een standaard die tekens uit allerlei talen en alfabetten omvat. ASCII is een veel kleinere tekenset: deze bevat onder meer de basisletters van het Latijnse alfabet, cijfers en het koppelteken, maar geen ‘ą’, ‘ę’ of ‘ż’. De traditionele schrijfwijze van hostnamen op internet is gebaseerd op deze beperkte tekenset.

Om namen met taalspecifieke tekens te kunnen gebruiken, is IDNA ontwikkeld: regels voor de verwerking van internationale domeinnamen in toepassingen. Een domeinnaam met zulke tekens wordt een IDN genoemd, oftewel een internationale domeinnaam. Punycode maakt deel uit van dit mechanisme en zorgt voor de omzetting van de tekens naar ASCII.

Punycode is geen versleuteling en beveiligt het adres niet. Het is een omkeerbare codering: uit een correcte gecodeerde weergave kun je de oorspronkelijke tekens terughalen zonder wachtwoord of sleutel. Het voorvoegsel xn-- op zichzelf betekent ook niet dat een website onveilig is.

Hoe ziet een gecodeerde domeinnaam eruit?

De omzetting gebeurt per onderdeel van de naam. Deze onderdelen worden door punten gescheiden en heten labels. Bij het adres bücher.de wordt het onderdeel bücher omgezet, terwijl de extensie de ongewijzigd blijft. Als meerdere labels tekens buiten ASCII bevatten, kan elk daarvan afzonderlijk moeten worden gecodeerd.

In dit voorbeeld:

Punycode behoudt de basistekens die al in de naam staan en geeft de overige tekens weer met een gecodeerde reeks. Voeg echter niet handmatig achtervoegsels toe en probeer het resultaat niet te raden: gebruik voor de omzetting een hulpmiddel dat IDNA ondersteunt.

De codering verwijdert geen diakritische tekens. Het domein żaba.pl wordt niet het domein zaba.pl; het zijn verschillende namen die bij verschillende domeinhouders kunnen horen. De variant met Poolse tekens en de correcte xn--…-weergave ervan verwijzen daarentegen naar hetzelfde domein.

Wanneer moet je de xn–notatie gebruiken?

Een gebruiker typt meestal de naam met taalspecifieke letters in, waarna de browser de benodigde omzetting uitvoert. Bij het beheren van een domein kun je echter formulieren tegenkomen die de ASCII-vorm vereisen, bijvoorbeeld in een DNS-beheerpaneel, bij je hostingdienst, in een monitoringtool of in de serverconfiguratie.

Er is geen uniforme regel voor alle beheerpanelen. Sommige accepteren een Unicode-naam en zetten die zelf om, andere verwachten een schrijfwijze met xn--. Controleer in de documentatie van de betreffende dienst welk formaat nodig is.

Een veilige configuratieprocedure ziet er zo uit:

  1. Kopieer de exacte domeinnaam uit het beheerpaneel van de registrar, het bedrijf dat de registratie verzorgt.
  2. Controleer de ASCII-vorm in het beheerpaneel of met een hulpmiddel dat IDNA ondersteunt.
  3. Voer het formaat in dat de dienst vereist, zonder punten of koppeltekens te wijzigen.
  4. Test na de configuratie de website, HTTPS en — als je die gebruikt — de e-mail.

Dat tekst kan worden gecodeerd, betekent nog niet dat je die als domeinnaam kunt registreren. Het register dat de betreffende extensie beheert, bepaalt welke tekens en combinaties daarvan zijn toegestaan. Er gelden ook lengtelimieten voor labels. Daarom is de lengte na de omzetting van belang, niet alleen het aantal zichtbare letters. Controleer de beschikbaarheid van de naam en de registratieregels bij de registrar of de beheerder van de extensie.

Waarom toont de browser soms code in plaats van letters?

Browsers hanteren eigen regels voor de weergave van internationale domeinnamen. Ze kunnen de naam met taalspecifieke tekens tonen of de technische xn---vorm laten staan. Die keuze hangt onder meer af van de gebruikte alfabetten en de bescherming tegen adressen die zich voordoen als een ander adres.

Het probleem zit in tekens die op elkaar lijken, maar verschillende Unicode-codes hebben. Zo zijn de Latijnse ‘a’ en de Cyrillische ‘а’ soms moeilijk van elkaar te onderscheiden. Misbruik van die gelijkenis voor fraude wordt een homograafaanval genoemd.

Door Punycode weer te geven, kan de browser het voor een oplichter moeilijker maken om het verschil te verbergen. Toch moet je het adres blijven controleren. Gebruik bij het inloggen op je bank of e-mail een opgeslagen bladwijzer, of typ zelf het bekende adres in. HTTPS bevestigt dat de verbinding met dat domein versleuteld is, niet dat het domein eigendom is van het bedrijf dat de vormgeving van de website suggereert.

Moet je een domein met Poolse tekens kiezen?

Een domeinnaam die overeenkomt met de spelling van de merknaam kan voor een Pools publiek goed leesbaar zijn. Zo’n naam kan echter minder handig zijn voor mensen zonder Pools toetsenbord en in systemen die internationale domeinnamen minder goed ondersteunen. Houd bij je keuze dus niet alleen rekening met hoe het adres eruitziet, maar ook met hoe je het doorgeeft en welke hulpmiddelen je gebruikt.

Als je zowel een variant met Poolse tekens als een variant zonder die tekens registreert, kies dan één hoofdadres en laat het andere daarnaar doorverwijzen. Een doorverwijzing voor de website configureert niet automatisch de e-mail. Bovendien staat de ondersteuning van een internationale domeinnaam in een e-mailadres los van de ondersteuning van Unicode-tekens vóór het symbool @.

Controleer voordat je het domein koopt bij je hosting- en e-mailprovider of die de gekozen naam ondersteunt en welk formaat nodig is. Zo kun je de praktische bruikbaarheid beoordelen voordat je visitekaartjes laat drukken en het adres publiceert.

Zie ook: Wat is ASCII?

Lees ook

Lees hoe PHP-FPM PHP-verzoeken verwerkt, verschilt van een webserver en hoe je processen afstemt op verkeer en hostingcapaciteit.
Ontdek hoe BIND als open DNS-serversoftware domeinen beheert, welke rollen het vervult en wanneer zelf beheren zinvol is.
Lees wat het Poolse REGON-register en -nummer betekenen, hoe ze verschillen van NIP en KRS en hoe je bedrijfsgegevens controleert.