Geschrieben von

CNAME und Tracking

Webtracking

Was ist CNAME?

Wenn man eine Website im Browser über die Adresszeile aufruft, dann wird der Domainname zunächst in eine IP-Adresse umgewandelt. Über diese IP-Adresse weiß der Browser unter welcher IP-Adresse der Server liegt, um so die benötigten Dateien anzufordern. Diese Namensauflösung übernimmt das Domain Name System (DNS). Damit die Namensauflösung aber funktioniert, müssen auf dem DNS-Server (also der Server, wo das DNS liegt) entsprechende DNS-Einträge (auch DNS-Records genannt) vorhanden sein. Über die Einträge ist jede IP-Adresse einem Domainnamen zugeordnet. Diese Namensauflösung (von Domain zu IP-Adresse) findet über die beiden DNS-Records “A” und “AAAA” statt. Ein weiterer wichtiger DNS-Record-Typ ist der CNAME.

CNAME steht für “Canonical Name”. Mit dem CNAME können mehrere Namen auf eine IP-Adresse verweisen. Man kann damit also einen Domainnamen mit einem Alias verbinden. Dadurch ist das gleiche Webangebot unter einer anderen Domain erreichbar. Grundvoraussetzung für den Einsatz eines CNAMEs: Es muss schon ein A- und/oder AAAA-Record vorliegen. Hintergrund ist, dass sich der CNAME auf den A- oder AAAA-Record bezieht. Bei IP-Adressen-Änderung, muss entsprechend nur der A- oder AAAA-Record geändert werden.

CNAME-Syntax

In einer sogenannten Zonendatei (eine txt-Datei) folgt die Syntax von DNS-Einträgen einem standardisierten Schema, wo folgende Felder zum Einsatz kommen:

  • name: Hier kommt der Alias des Domainnamens.
  • ttl: ttl steht für “Time to Live”. Damit legt man fest, wie lange der Eintrag im Cache gehalten werden darf.
  • class: class ist ein optionales Feld und gibt an, um welche Art des Netzwerks es sich handelt. Heute hat dieses Feld kaum noch Bedeutung, da hier fast nur noch das Netzwerk vom Typ “IN” zum Einsatz kommt. IN steht für Internet. Früher gab es noch Hesiod (HS) und Chaosnet (CH), was aber kaum noch benutzt wird.
  • type: Hier kommt der DNS-Record-Typ. Beim CNAME-Eintrag wäre das “CNAME”.
  • rdata: Hier kommt dann der eigentliche Name der Domain.

Ein beispielhafter Minimal-CNAME-Eintrag würde wie folgt aussehen:

www.domain.net. CNAME www.domain.com.

In diesem Fall wäre domain.com der eigentliche Domainname (hier muss auch ein A- oder AAAA-Record schon existieren). Das gleiche Webangebot ist aber auch unter domain.net erreichbar.

Welche Rolle spielt CNAME beim Webtracking?

Mit einem CNAME-Eintrag lassen sich Third-Party-Tracker als First-Party-Tracker tarnen. Gehen wir von 2 Domains aus:

  • www.domain1.com
  • www.domain2.com

Beide Domains würden von Anbieter XY ein Skript in die Website laden, welches von tracker.adnetworkexample.com/script.js bereitgestellt wird. Da das Skript auf verschiedenen Websites eingebunden ist, kann tracker.adnetworkexample.com Nutzer über Websites hinweg identifizieren. Tracking-Blockade-Tools können nun ganz einfach /script.js von der Domain tracker.adnetworkexample.com blockieren, um das Tracking zu verhindern.

Über einen CNAME-Eintrag kann tracker.adnetworkexample.com als abc.domain1.com auf der ersten Domain und als xyz.domain2.com auf der zweiten Domain verschleiert werden. In diesem Fall würde es nach einem Request im First-Party-Kontext aussehen, womit Tracking-Blocker Schwierigkeiten haben. Diese Methode des Tracking ist mittlerweile unter dem Namen “CNAME Cloaking” bekannt.

Mit dem First-Party-Kontext kommt noch der Umstand hinzu, dass dadurch auch die Cookies im First-Party-Kontext mit jedem Request an die CNAME-Domain mitgeschickt werden. Das kann wiederum zu einem Datenleck führen, was man sich bewusst sein muss, bevor man sich entscheidet mit CNAME-Cloaking Tracking zu betreiben (und Datenschutz muss an erster Stelle stehen).