Google Fonts, CDNs und Einbettungen: Drittanbieter, die keiner bestellt hat

Praxis

Bei den meisten Websites, die zum ersten Mal gescannt werden, taucht in der Liste der Drittanbieter-Requests vor der Einwilligung mindestens ein Eintrag auf, den niemand bewusst eingebaut hat. Kein Tracking-Pixel, kein Analytics, sondern eine Schrift, eine JavaScript-Bibliothek oder eine eingebettete Karte.

Solche Einträge entstehen selten aus einer Entscheidung. Sie kommen mit dem Theme, mit einem Plugin oder mit einem kopierten Einbettungscode. Genau deshalb fallen sie beim Aufsetzen des Consent-Tools durch: Sie stehen auf keiner Liste, weil sie niemand als Dienst wahrgenommen hat.

Was bei jedem fremden Request passiert

Lädt der Browser eine Datei von einem anderen Server, baut er eine Verbindung dorthin auf. Der Server sieht dabei zwangsläufig die IP-Adresse des Besuchers, dazu in der Regel den User-Agent und über den Referrer die Seite, von der die Anfrage kommt. Das gilt für eine Schriftdatei genauso wie für ein Werbeskript. Ob der Anbieter die Daten speichert, auswertet oder sofort verwirft, steht in seinen Bedingungen und ist von außen nicht messbar.

Für Google Fonts beschreibt Google das selbst so: Die Web-API setzt und protokolliert keine Cookies, erhält aber die IP-Adresse des Besuchers, um die Anfrage zu beantworten und für Sicherheitszwecke. Das ist die typische Lage bei solchen Diensten. Es wird nichts im Endgerät gespeichert, und trotzdem verlässt eine Information den Browser in Richtung eines Dritten.

Der sachliche Kern der Google-Fonts-Debatte

Bekannt wurde das Thema durch ein Urteil des Landgerichts München I vom 20. Januar 2022 (Az. 3 O 17493/20). Das Gericht sah in der dynamischen Einbindung von Google Fonts ohne Einwilligung eine Weitergabe der IP-Adresse an Google, die der Besucher nicht hinnehmen musste, und sprach dem Kläger 100 Euro zu. Im Herbst 2022 folgte eine Welle von Abmahnschreiben, die sich auf dieses Urteil stützten.

Diese Welle hat sich inzwischen weitgehend erledigt, und zwar auf mehreren Wegen. Im Dezember 2022 ließ die Staatsanwaltschaft Berlin Durchsuchungen bei einem Anwalt und seinem Mandanten durchführen, der Vorwurf lautete auf versuchten Abmahnbetrug und versuchte Erpressung in mehr als 2.400 Fällen. Im März 2023 entschied dasselbe Landgericht in einem anderen Verfahren (Az. 4 O 13063/22), dass automatisiert per Crawler gesuchte Verstöße keinen Anspruch begründen, und wertete das Vorgehen als rechtsmissbräuchlich.

Übrig bleibt die technische Frage, um die es von Anfang an ging: Die Seite schickt ohne Zutun des Besuchers dessen IP-Adresse an einen Dritten. Wie das im konkreten Fall zu bewerten ist, klärst du mit deiner Datenschutzberatung. Messbar ist, ob es passiert.

Die üblichen Verdächtigen

Die folgenden Quellen tauchen in Scans am häufigsten als Requests vor der Einwilligung auf, ohne dass der Betreiber davon weiß:

  • Schriften von fonts.googleapis.com und fonts.gstatic.com, oft vom Theme oder vom Page Builder nachgeladen
  • Icon-Schriften und Bibliotheken von öffentlichen CDNs wie cdnjs, jsDelivr oder unpkg
  • Eingebettete Karten, die beim Laden der Seite Kacheln und Skripte von Google-Servern holen
  • Video-Einbettungen von YouTube oder Vimeo, die schon vor dem Abspielen den Player vom Anbieter laden
  • Eingebettete Social-Media-Beiträge, Bewertungs-Widgets und Kalender
  • reCAPTCHA und ähnliche Prüfdienste, die auf jeder Seite mit Formular geladen werden

Einbettungen: mehr als ein Request

Bei Schriften und Bibliotheken bleibt es in der Regel beim Request. Bei eingebetteten Inhalten ist das anders, denn ein iframe ist eine vollständige Seite des Anbieters, mit eigenen Skripten und eigenem Speicher. Was darin passiert, entscheidet der Anbieter, nicht die einbettende Website.

Ein gutes Beispiel ist der erweiterte Datenschutzmodus von YouTube unter youtube-nocookie.com. Er setzt beim Laden keine Cookies, das stimmt. Mehrere unabhängige Tests berichten aber, dass der Player schon vor dem Abspielen Einträge im Local Storage anlegt, darunter eine Gerätekennung, und nach dem Klick auf Play die üblichen YouTube-Cookies setzt. Speicherzugriffe im Endgerät sind nicht auf Cookies beschränkt, das haben wir im Artikel über Web Storage ausführlich beschrieben. Der Name der Domain sagt deshalb wenig darüber aus, was im Browser tatsächlich geschrieben wird.

Das Performance-Argument gilt nicht mehr

Lange hieß es, fremde CDNs seien schneller, weil der Browser eine beliebte Datei schon von einer anderen Website im Cache habe. Dieses Argument ist seit 2020 überholt. Chrome partitioniert seinen HTTP-Cache seit Version 86 nach der besuchten Website, Firefox und Safari arbeiten ähnlich. Eine Schrift, die beim Besuch von Website A geladen wurde, muss für Website B erneut geladen werden, auch wenn sie von derselben Adresse kommt.

Damit fällt ein wesentlicher Grund weg, Standardschriften und Bibliotheken extern zu beziehen. Eine lokal ausgelieferte Datei spart zudem den Verbindungsaufbau zu einem weiteren Host.

Lokal einbinden, später laden

Für die meisten Fälle gibt es eine von zwei Lösungen, je nachdem, ob der Inhalt auch ohne den Anbieter funktioniert:

  • Schriften herunterladen und vom eigenen Server ausliefern, samt eigener @font-face-Regel; Google Fonts stehen unter offenen Lizenzen, die das erlauben
  • Bibliotheken wie Icon-Sets oder JavaScript-Frameworks ins eigene Build übernehmen statt vom CDN zu laden
  • Bei Themes und Page Buildern die Option zum lokalen Laden der Schriften suchen; viele bieten sie, aber nicht als Voreinstellung
  • Karten, Videos und Widgets hinter eine Zwei-Klick-Lösung legen: ein Platzhalter mit Vorschaubild, der den iframe erst nach einem Klick lädt
  • Für Anfahrten reicht oft ein statisches Kartenbild mit Link zum Kartendienst

So prüfst du es selbst

Öffne die Website in einem privaten Fenster, öffne die Entwicklertools und dort den Netzwerk-Tab, und lade die Seite neu, ohne das Banner anzufassen. Sortiere die Liste nach Domain oder filtere nach allem, was nicht zur eigenen Domain gehört. Jeder Eintrag, der jetzt schon erscheint, ist ein Request vor der Einwilligung.

Wichtig ist, mehrere Seiten zu prüfen: Die Startseite ist oft sauber, die Kontaktseite mit Karte und Formular dagegen nicht. Und nach jedem Theme- oder Plugin-Update lohnt ein neuer Blick, weil gerade die Einstellung für lokale Schriften dabei gern zurückgesetzt wird.

Nach Googles eigener Beschreibung nicht: Die Web-API setzt und protokolliert keine Cookies. Sie erhält aber mit jeder Anfrage die IP-Adresse des Besuchers. Um genau diese Übertragung ging es im Urteil des Landgerichts München I von 2022, nicht um Cookies.

Nicht vollständig. Beim Laden entstehen keine Cookies, unabhängige Tests zeigen aber Einträge im Local Storage schon vor dem Abspielen und die üblichen YouTube-Cookies nach dem Klick auf Play. Was auf deiner Seite konkret geschrieben wird, zeigt ein Blick in den Speicher des Browsers oder ein Scan.

In der Regel nicht. Seit Browser ihren Cache nach Website trennen, profitiert niemand mehr davon, dass eine Schrift schon von einer anderen Seite geladen wurde. Eine lokal ausgelieferte Schrift spart dagegen den Verbindungsaufbau zu einem zusätzlichen Server.

Ein Platzhalter an der Stelle des eingebetteten Inhalts, meist mit Vorschaubild und kurzem Hinweis auf den Anbieter. Erst wenn der Besucher darauf klickt, lädt die Seite den iframe vom fremden Server. Bis dahin geht kein Request an den Anbieter.

Finden, was vor dem Klick schon lädt

Der Cookienator besucht deine Website wie ein echter Besucher und listet für jede Phase, welche Drittanbieter kontaktiert werden: vor der Einwilligung, nach dem Ablehnen, nach dem Annehmen. Schriften, CDNs und Einbettungen inklusive.

Website jetzt scannen