Wie lang darf eine TLD sein?

Lesezeit: 8 Minuten

Wie lang darf eine TLD sein
HellaMad

Ich arbeite an einer Regex zur E-Mail-Validierung in PHP und muss wissen, wie lange die TLD möglicherweise gültig und noch gültig sein könnte. Ich habe ein paar Recherchen durchgeführt, aber nicht viele Informationen zu diesem Thema gefunden. Wie lang darf eine TLD also sein?

  • Sie sollten „Wie verwende ich einen regulären Ausdruck, um eine E-Mail-Adresse zu validieren?“ lesen.

    – Saxoier

    11. Februar 12 um 9:54 Uhr

  • Wie in vielen verwandten Fragen erwähnt, ist die E-Mail-Validierung durch Regex bestenfalls zweifelhaft. Siehe auch zB stackoverflow.com/questions/201323/…

    – Dreier

    11. Februar 12 um 9:56 Uhr

  • Bitte, bitte, bitte rollen Sie nicht Ihre eigene Lösung für dieses gut gelöste Problem. Verwenden Sie die integrierte Validierung von PHP oder eine ausgezeichnete, gut getestete, RFC-konforme Bibliothek eines Drittanbieters, wie z is_email. Denken Sie daran, die nur Eine Möglichkeit, wirklich zu wissen, ob eine E-Mail-Adresse gültig ist, besteht darin, eine E-Mail an sie zu senden und den Benutzer aufzufordern, eine Aktion basierend auf dem Inhalt der E-Mail durchzuführen.

    – Karl

    12. Februar 12 um 1:24 Uhr

  • Vergessen Sie auch nicht, dass sich TLDs regelmäßig und mit ändern gTLDs bald ins Leben gerufen wird, wird alles, was gegen bekannte TLDs validiert wird, veraltet und schwer zu warten sein.

    – Karl

    12. Februar 12 um 1:25 Uhr

  • @Charles Wo steht, dass er PHP verwendet? Welche anderen Möglichkeiten gibt es zu validieren, ohne “Ihre eigene Lösung zu entwickeln”, da die meisten Lösungen kein PHP verwenden können (die Validierung von E-Mail-Adressen erfolgt fast immer clientseitig).

    – NickG

    30. Juli 15 um 10:17 Uhr

1643909049 195 Wie lang darf eine TLD sein
dreifach

DNS erlaubt maximal 63 Zeichen für eine individuelle Bezeichnung.

  • ist es 64? Ich sehe hier 63: en.wikipedia.org/wiki/Domain_Name_System#cite_ref-rfc1034_1-2 habe ich einen übersehen?

    – Fragezeichen

    2. April 13 um 3:46 Uhr


  • Danke für die Frage. Ich kann mich nicht erinnern, dass ich zu diesem Thema ausführlich recherchiert habe, also habe ich es damals wahrscheinlich nur gegoogelt. Ich werde die Frage bearbeiten und diese Dankesnotiz hinterlassen.

    – Dreier

    2. April 13 um 4:10 Uhr

Wie lang darf eine TLD sein
Dan Dascalescu

Die längste derzeit existierende TLD ist 24 Zeichen lang und kann sich ändern. Die maximale TLD-Länge, angegeben durch RFC-1034 ist 63 Oktetts.

So erhalten Sie die Länge der längsten vorhandenen TLD:

wget -qO - http://data.iana.org/TLD/tlds-alpha-by-domain.txt | tail -n+2 | wc -L

Hier ist, was dieser Befehl tut:

  1. Bekommen das neueste Liste der aktuell existierenden TLDs von IANA
  2. Entfernen Sie die erste Zeile, die ein langer Kommentar ist
  3. Starten wc um die längste Linie zu zählen

Alternative Verwendung curl danke Stefan:

curl -s http://data.iana.org/TLD/tlds-alpha-by-domain.txt | tail -n+2 | wc -L

  • es ist jetzt 24 🙂 wenn du kein wget hast, hier ist die curl-alternative curl -s http://data.iana.org/TLD/tlds-alpha-by-domain.txt | tail -n+2 | wc -L

    – Stefan Rogin

    18. Dezember ’14 um 8:00 Uhr

  • Dies ist nicht die Antwort auf die Frage “wie lange es möglicherweise sein kann” – es ist nur eine Antwort darauf, was das längste ist, das derzeit verwendet wird.

    – NickG

    30. Juli 15 um 10:04 Uhr

  • wc -L ist auch nicht portierbar, obwohl es einfach ist, ein Awk-Skript zu schreiben, das die Funktionalität von zusammenfasst tail -n+2 | wc -L; z.B awk 'NR>1{ if (length($0) < max) next; longest=$0; max=length($0)} END { print max, longest }' die als zusätzlichen Bonus auch die längste TLD druckt (oder nur die erste, wenn es mehrere gleich lang gibt). Noch mit 24, mit XN--VERMGENSBERATUNG-PWBauch bekannt .vermögensberatung. Eine schnelle Überprüfung, die viel einfacher zu tippen ist awk 'NR>1 && length($0)>23'

    – Dreier

    13. Januar 16 um 10:57 Uhr


Das längste mit lateinischen Buchstaben ist .MUSEUM (Quelle), aber es gibt einige mit Sonderzeichen. Das längste von ihnen ist XN–CLCHC0EA0B2G2A9GCD. Auch wird es in kurzer Zeit möglich sein, eine eigene TLD zu einem hohen Preis zu reservieren und somit auch länger sein zu können.

1643909050 408 Wie lang darf eine TLD sein
aviat

-BEARBEITEN-

Laut RFC 2606 ist .localhost ein reservierter Domainname und hat eine Länge von 9 Zeichen. Das ist die längste, die mir bekannt ist.

-ENDE DER BEARBEITUNG-

Ich denke jedoch, dass Sie sich um die Länge der E-Mail-Adresse kümmern sollten und nicht nur um die TLD-Länge. Nachfolgend ein Zitat von Dies Artikel. Die Länge der E-Mail-Adresse beträgt 254 Zeichen:

Es scheint einige Verwirrung über die maximal gültige Größe von E-Mail-Adressen zu geben. Die meisten Leute glauben, dass es 320 Zeichen sind (64 Zeichen für den Benutzernamen + 255 Zeichen für die Domain + 1 Zeichen für das @-Symbol). Andere Quellen schlagen 129 (64 + 1 + 64) oder 384 (128 + 1 + 255, vorausgesetzt, der Benutzername wird in Zukunft doppelt so lang) vor.

Diese Verwirrung bedeutet, dass Sie das “Robustheitsprinzip” beachten sollten (“Entwickler sollten sorgfältig Software schreiben, die sich eng an bestehende RFCs hält, aber Eingaben von Kollegen akzeptieren und analysieren, die möglicherweise nicht mit diesen RFCs übereinstimmen.” – Wikipedia) beim Schreiben von Software, die mit E-Mail-Adressen umgeht. Darüber hinaus kann einige Software durch naive Annahmen lahmgelegt werden, z. B. zu denken, dass 50 Zeichen angemessen sind (Beispiele). Ihre 200 Zeichen lange E-Mail-Adresse mag technisch gültig sein, aber das wird Ihnen nicht helfen, wenn die meisten Websites oder Anwendungen sie ablehnen.

Die tatsächliche maximale E-Mail-Länge beträgt derzeit 254 Zeichen:

“Die Originalversion von RFC 3696 sagte zwar, 320 sei die maximale Länge, aber John Klensin (ICANN) akzeptierte später, dass dies falsch war.”

„Das ergibt sich aus der einfachen Rechnung aus maximaler Länge einer Domain (255 Zeichen) + maximaler Länge eines Postfachs (64 Zeichen) + dem @-Zeichen = 320 Zeichen. Falsch. Diese Ente ist tatsächlich in der Originalversion dokumentiert RFC3696. Es wurde in den Errata korrigiert. Es gibt tatsächlich eine Einschränkung von RFC5321 auf dem Pfadelement einer SMTP-Transaktion von 256 Zeichen. Aber dazu gehören spitze Klammern um die E-Mail-Adresse, sodass die maximale Länge einer E-Mail-Adresse 254 Zeichen beträgt.”

Da ich ein .net-Entwickler bin, folgt die Javascript-Darstellung zur Bestimmung der längsten derzeit verfügbaren TLD. Dies gibt die Länge der längsten TLD zurück, die Sie in Ihrem RegEx verwenden könnten.

versuchen Sie bitte das folgende Code-Snippet

function getTLD() {
    var length = 0;
    var longest;
    var request = new XMLHttpRequest();

    request.open('GET', 'http://data.iana.org/TLD/tlds-alpha-by-domain.txt', true);
    request.send(null);
    request.onreadystatechange = function () {
        if (request.readyState === 4 && request.status === 200) {
            var type = request.getResponseHeader('Content-Type');
            if (type.indexOf("text") !== 1) {
                var tldArr = request.responseText.split('n'); 
                tldArr.splice(0, 1);

                for (var i = 0; i < tldArr.length; i++) {
                    if (tldArr[i].length > length) {
                        length = tldArr[i].length;
                        longest = tldArr[i];
                    }
                } 

                console.log("Longest >> " + longest + " >> " + length);
                return length;
            }
        }
    }
}
<button onclick="getTLD()">Get TLD</button>

Das ist PHP Code, um aktuelle vertikale Striche getrennt zu erhalten UTF-8 TLDs-Liste, die direkt in einem regulären Ausdruck verwendet werden soll:

<?php 
  function getTLDs($separator){
    $tlds=file('http://data.iana.org/TLD/tlds-alpha-by-domain.txt');
    array_shift($tlds); // remove heading comment
    usort($tlds,function($a,$b){ return strlen($b)-strlen($a); }); // sort from longest to shortest
    return implode($separator,array_map(function($e){ return idn_to_utf8(trim(strtolower($e))); },$tlds));
  }
  echo getTLDs('|');
?>

Um einen Hostnamen abzugleichen, könnten Sie ihn wie folgt verwenden:

$tlds=getTLDs('|');
if (preg_match("{([da-z.-]+).($tlds)}u",$address)) {
  ..
}

1643909050 259 Wie lang darf eine TLD sein
Jan Kyu Peblik

Eine TLD kann beliebig lang sein. Es gibt ständig neue TLDs. In Zukunft wird es mehr TLDs geben, die nicht von der Stelle reguliert werden, die derzeit die Mehrheit der TLDs reguliert. Wir werden auch in Zukunft keine E-Mails mehr verwenden, wie wir es derzeit tun. Das gesagt:

Sie müssen niemals eine E-Mail-Adresse validieren. Wenn Sie Leute verlangsamen möchten und eine Vorstellung davon haben, ob es sich tatsächlich um Menschen handelt, fügen Sie ein CAPTCHA hinzu. Wenn Sie eine funktionierende E-Mail bestätigen müssen, senden Sie eine E-Mail mit einem Bestätigungslink, den sie öffnen können. Wenn Sie die Übermittlung von Dingen nicht drosseln, die Dinge wie das Senden von E-Mails zur Überprüfung generieren können, spielt es keine Rolle, ob Sie bestätigen, dass die Adresse sowieso technisch gültig ist, sie wird an diesem Punkt trotzdem missbraucht.

  • Nach diesem Argument sollten wir keine Benutzereingaben validieren, da sie sich irgendwann in der Zukunft ändern könnten. Dies ist sicherlich kein guter Rat, da die Validierung mehrere Verwendungszwecke hat. Denken Sie darüber nach, wenn wir ein Skript erstellen, das eine E-Mail an eine angegebene E-Mail-Adresse sendet, und wir keine Validierung durchführen, könnte ein Angreifer einfach das Formular mit Bullshit-Daten immer und immer wieder senden, und unser E-Mail-Server würde beim Senden versuchen und scheitern diese E-Mails. Tun Sie genug davon und der E-Mail-Server fällt aus. Ein CAPTCHA hilft, ist aber nicht ausfallsicher und ab einer bestimmten Anzahl von Anfragen auch nicht kostenlos.

    – Tox

    11. Mai 21 um 10:36 Uhr

  • @Tox Nein, und ich habe das bereits in meiner Antwort angesprochen. “es wird an diesem Punkt trotzdem missbraucht.” Ein Angreifer kann ein Formular mit Daten senden, das heißt nicht “Bullshit” immer wieder genauso wie Daten, die “Bullshit” sind. Darüber hinaus verursachen echte Daten im Gegensatz zu gefälschten Daten mehr Probleme in der realen Welt. Es handelt sich um separate Anliegen, und Sie können Missbrauch nur stoppen, indem Sie nach Missbrauch suchen. Die Daten sind weitgehend irrelevant. Dies ist in dieser Hinsicht nur sinnvoll, wenn Sie eine Retrospektive durchführen und entscheiden möchten, dass mehrere Benutzer, die dieselben Daten übermitteln, derselbe Missbraucher sind, was wiederum keine bestimmten Daten oder “Gültigkeit” erfordert.

    – Jan Kyu Peblik

    11. Mai 21 um 17:48 Uhr

.

758030cookie-checkWie lang darf eine TLD sein?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy