In der Informatik bezeichnet Kanonisierung (manchmal auch Standardisierung oder Normalisierung genannt ) ein Verfahren zur Umwandlung von Daten mit mehreren möglichen Darstellungsformen in eine „standardisierte“, „normale“ oder kanonische Form . Dies kann erfolgen, um verschiedene Darstellungen auf Äquivalenz zu vergleichen, die Anzahl unterschiedlicher Datenstrukturen zu bestimmen, die Effizienz verschiedener Algorithmen durch Vermeidung wiederholter Berechnungen zu verbessern oder eine sinnvolle Sortierreihenfolge zu ermöglichen .
Anwendungsfälle
Dateinamen
Dateien in Dateisystemen können in den meisten Fällen über mehrere Dateinamen aufgerufen werden . Beispielsweise kann in Unix -ähnlichen Systemen die Zeichenkette " " durch " " ersetzt werden. In der C-Standardbibliothek übernimmt die Funktion `filenames` diese Aufgabe. Weitere Operationen, die diese Funktion zur Kanonisierung von Dateinamen durchführt, sind die Behandlung von Komponenten, die auf übergeordnete Verzeichnisse verweisen, die Vereinfachung von Sequenzen aus mehreren Schrägstrichen, das Entfernen von abschließenden Schrägstrichen und die Auflösung symbolischer Links . /.//realpath()/..
Die Kanonisierung von Dateinamen ist für die Computersicherheit von großer Bedeutung. Beispielsweise kann ein Webserver die C:\inetpub\wwwroot\cgi-binAusführung von Dateien auf das Verzeichnis `cgi` beschränken. Diese Regel wird durch die Überprüfung des Pfades auf die C:\inetpub\wwwroot\cgi-bin\korrekte Schreibweise sichergestellt. Obwohl die Datei C:\inetpub\wwwroot\cgi-bin\..\..\..\Windows\System32\cmd.exezunächst im Verzeichnis `cgi` zu liegen scheint, nutzt sie den ..Pfadbezeichner aus, um die Verzeichnishierarchie zu durchlaufen und eine Datei außerhalb dieses Verzeichnisses auszuführen cgi-bin. Die cmd.exeAusführung dieser Datei wäre ein Fehler, der durch die fehlende Kanonisierung des Dateinamens auf die einfachste Darstellung `cgi.cgi` verursacht wird C:\Windows\System32\cmd.exeund als Directory-Traversal- Schwachstelle bezeichnet wird. Mit kanonisiertem Pfad ist klar, dass die Datei nicht ausgeführt werden sollte.
Unicode
In Unicode lassen sich viele Buchstaben mit Akzenten auf mehrere Arten darstellen. Beispielsweise kann é in Unicode als Unicode-Zeichen U+0065 (LATIN SMALL LETTER E) gefolgt von U+0301 (KOMBINIERENDER AKUT-AKZENT) dargestellt werden, aber auch als vorkompositionelles Zeichen U+00E9 (LATIN SMALL LETTER E WITH ACUTE). Dies erschwert den Vergleich von Zeichenketten, da jede mögliche Darstellung einer Zeichenkette mit solchen Glyphen berücksichtigt werden muss. Um dieses Problem zu lösen, bietet Unicode den Mechanismus der kanonischen Äquivalenz . In diesem Zusammenhang ist die Kanonisierung gleichbedeutend mit der Unicode-Normalisierung .
Die Verwendung von Kodierungen variabler Breite im Unicode-Standard, insbesondere UTF-8 , kann in bestimmten Situationen eine zusätzliche Kanonisierung erforderlich machen. Gemäß dem Standard gibt es in UTF-8 für jedes Unicode-Zeichen nur eine gültige Bytefolge [ 1 ]. Einige Bytefolgen sind jedoch ungültig, d. h. sie lassen sich nicht durch die Kodierung einer beliebigen Unicode-Zeichenkette in UTF-8 erzeugen. Ungenaue Decoder-Implementierungen akzeptieren möglicherweise ungültige Bytefolgen als Eingabe und erzeugen für eine solche Folge ein gültiges Unicode-Zeichen als Ausgabe. Bei Verwendung eines solchen Decoders haben manche Unicode-Zeichen effektiv mehr als eine entsprechende Bytefolge: die gültige und mehrere ungültige. Dies kann zu Sicherheitsproblemen führen, ähnlich dem im vorherigen Abschnitt beschriebenen. Wenn man also einen Filter (z. B. einen in UTF-8 geschriebenen regulären Ausdruck) auf UTF-8-Zeichenketten anwenden möchte, die später an einen Decoder übergeben werden, der ungültige Bytefolgen zulässt, sollte man die Zeichenketten vor der Filterung kanonisieren. In diesem Kontext bezeichnet Kanonisierung den Prozess, bei dem jedes Zeichen einer Zeichenkette in seine einzige gültige Bytefolge übersetzt wird. Alternativ zur Kanonisierung können Zeichenketten, die ungültige Bytefolgen enthalten, verworfen werden.
URL
Eine kanonische URL ist eine URL , die die einzige verlässliche Quelle für doppelte Inhalte definiert .
Nutzung durch Google
Die kanonische URL ist diejenige URL, die Google aus einer Gruppe von Duplikaten Ihrer Website als repräsentativste Seite einstuft. Wenn Sie beispielsweise URLs für dieselbe Seite haben, wie z. B. „Seite1“ https://example.com/?dress=1234und https://example.com/dresses/1234„Seite2“, wählt Google eine davon als kanonisch aus. Die Seiten müssen nicht absolut identisch sein; geringfügige Änderungen bei der Sortierung oder Filterung von Listenseiten machen die Seite nicht eindeutig (z. B. Sortierung nach Preis oder Filterung nach Artikelfarbe).
Die kanonische Domäne kann sich in einer anderen Domäne befinden als ein Duplikat. [ 2 ]
Internet
Mithilfe von kanonischen URLs weiß eine Suchmaschine, welcher Link in einem Suchergebnis angezeigt werden soll.
Ein kanonisches Link-Element kann verwendet werden, um eine kanonische URL zu definieren.
Intranet
In Intranets ist die manuelle Informationssuche weit verbreitet. Auch in diesem Fall können kanonische URLs in nicht maschinenlesbarer Form definiert werden, beispielsweise in einer Richtlinie .
Verschiedenes
Kanonische URLs sind in der Regel die URLs, die für die Freigabeaktion verwendet werden .
Da die kanonische URL in den Suchergebnissen der Suchmaschinen verwendet wird, handelt es sich in den meisten Fällen um eine Landingpage .
Suchmaschinen und SEO
In der Websuche und Suchmaschinenoptimierung (SEO) befasst sich die URL-Kanonisierung mit Webinhalten, die mehrere mögliche URLs haben. Mehrere URLs für denselben Webinhalt können Suchmaschinen Probleme bereiten – insbesondere bei der Bestimmung der in den Suchergebnissen anzuzeigenden URL. [ 3 ] Die meisten Suchmaschinen unterstützen das Canonical-Link-Element als Hinweis darauf, welche URL als die korrekte Version behandelt werden soll. Wie John Mueller von Google erklärt, können andere Anweisungen auf einer Seite, wie beispielsweise das robots.txt- Element (noindex), Suchmaschinen widersprüchliche Signale hinsichtlich der Handhabung der Kanonisierung senden. [ 4 ]
Beispiel:
http://wikipedia.comhttp://www.wikipedia.comhttp://www.wikipedia.com/http://www.wikipedia.com/?source=asdf
Alle diese URLs verweisen auf die Startseite von Wikipedia, aber eine Suchmaschine betrachtet nur eine davon als die kanonische Form der URL.
XML
Ein kanonisches XML- Dokument ist per Definition ein XML-Dokument in kanonischer XML-Form, wie sie in der Spezifikation für kanonisches XML definiert ist . Kurz gesagt, die Kanonisierung entfernt Leerzeichen innerhalb von Tags, verwendet bestimmte Zeichenkodierungen, sortiert Namensraumreferenzen und entfernt redundante, entfernt XML- und DOCTYPE-Deklarationen und wandelt relative URIs in absolute URIs um.
Ein einfaches Beispiel wären die folgenden beiden XML-Codeausschnitte:
<node1 x='1' a="1" a="2">Data</node1 > <node2>Data</node2><node1 a="2" x="1">Data</node1> <node2>Data</node2>
Das erste Beispiel enthält zusätzliche Leerzeichen im schließenden Tag des ersten Knotens. Im zweiten, kanonisierten Beispiel wurden diese Leerzeichen entfernt. Beachten Sie, dass bei der W3C-Kanonisierung nur die Leerzeichen innerhalb der Tags entfernt werden, nicht die zwischen den Tags.
Eine vollständige Zusammenfassung der Änderungen zur Kanonisierung ist unten aufgeführt:
- Das Dokument ist in UTF-8 kodiert.
- Zeilenumbrüche werden vor dem Parsen beim Einlesen auf #xA normalisiert.
- Die Attributwerte werden normalisiert, als ob dies von einem Validierungsprozessor durchgeführt würde.
- Zeichen- und geparste Entitätsreferenzen werden ersetzt
- CDATA-Abschnitte werden durch ihren Zeicheninhalt ersetzt.
- Die XML-Deklaration und die Dokumenttypdeklaration werden entfernt.
- Leere Elemente werden in Start-Ende-Tag-Paare umgewandelt.
- Leerzeichen außerhalb des Dokumentelements und innerhalb von Start- und End-Tags werden normalisiert.
- Sämtliche Leerzeichen im Zeicheninhalt bleiben erhalten (ausgenommen Zeichen, die bei der Zeilenumbruchnormalisierung entfernt wurden).
- Als Trennzeichen für Attributwerte werden Anführungszeichen (doppelte Anführungszeichen) verwendet.
- Sonderzeichen in Attributwerten und Zeicheninhalten werden durch Zeichenreferenzen ersetzt.
- Überflüssige Namespace-Deklarationen werden aus jedem Element entfernt.
- Jedem Element werden Standardattribute hinzugefügt.
- Die Korrektur der
xml:baseAttribute wird durchgeführt - Die lexikographische Ordnung wird den Namensraumdeklarationen und Attributen jedes Elements auferlegt.
Computerlinguistik
In der Morphologie und Lexikografie bezeichnet ein Lemma die kanonische Form einer Wortgruppe . Im Englischen sind beispielsweise „ run“ , „runs“ , „ran“ und „running“ Formen desselben Lexems . Daher kann man eines davon auswählen, z. B. „run“ , um alle Formen zu repräsentieren. Lexikalische Datenbanken wie Unitex verwenden diese Art der Repräsentation.
Lemmatisierung ist der Prozess der Umwandlung eines Wortes in seine kanonische Form .
Siehe auch
- Kanonische Form – Standarddarstellung eines mathematischen Objekts
- Graphkanonisierung – Aufgabe in der algorithmischen Graphentheorie
- Lemmatisierung – Kanonisierung in der natürlichen Sprachverarbeitung
- Textnormalisierung – Prozess der Umwandlung von Text in eine einheitliche kanonische Form
- Typusart – Begriff, der in der biologischen Nomenklatur verwendet wird
Referenzen
- ^ RFC 2279: UTF-8, ein Transformationsformat von ISO 10646
- ^ „Doppelte URLs mit Canonical-URLs konsolidieren | Google Search Central“ .
- ^ Cutts, Matt (4. Januar 2006). „SEO-Tipp: URL-Kanonisierung“ . Matt Cutts: Gadgets, Google und SEO . Abgerufen am 3. September 2013 .
- ^ „Die kanonisierte URL ist noindex, nofollow“ . Abgerufen am 20. April 2020 .