1. Content Delivery Network
Die Grundlage des WWWs ist die Hyper-Text Markup Language (HTML), die es erlaubt, digitale Dokumente (logisch) zu strukturieren. Sofern eine Webseite einmal im Browser geladen wurde, ist sie durch die verwendete HTML-Technik grundsätzlich nicht mehr veränderbar und somit rein statisch. Um ein wenig mehr Flexibilität zu erreichen, wurde daher Mitte der 90er Jahre die Skriptsprache JavaScript entworfen, die es erlaubt, HTML-Dokumente während der Anzeige im Browser dynamisch zu verändern.
Einige der verwendeten JavaScript-Bibliotheken sind allerdings so bandbreitenintensiv, dass Webseitenbetreiber Content Delivery Networks (CDN) einsetzen, um das JavaScript von dort nachzuladen. Für andere Webseitenbetreiber ist es schlichtweg »bequem«, eine JavaScript-Bibliothek von einer externen Quelle einzubetten, ohne sich die Mühe zu machen, die für die Funktionalität der Webseite benötigen Ressourcen selbst zu hosten.
Im vorliegenden Beitrag der Serie »Firefox-Kompendium« möchte ich euch das Addon Decentraleyes vorstellen. Das Addon kann das Risiko für Sicherheit und Privatsphäre beim Surfen minimieren, das mit der Einbindung externer JavaScript-Ressourcen via CDNs einhergeht.
- Firefox: Ein Browser für Datenschutzbewusste – Firefox-Kompendium Teil1
- Firefox: uBlock Origin – Firefox-Kompendium Teil2
- Firefox: Decentraleyes – Firefox-Kompendium Teil3
- Firefox: First Party Isolation – Firefox-Kompendium Teil4
- Begleitartikel: Firefox-Kompendium: Warum ein JavaScript-Blocker notwendig ist
- Firefox: NoScript – Firefox-Kompendium Teil5
- Firefox: Smart Referer – Firefox-Kompendium Teil6
- Firefox: Neat URL – Firefox-Kompendium Teil7
- Firefox: Skip Redirect – Firefox-Kompendium Teil8
- Firefox: uMatrix – Firefox-Kompendium Teil9
- Firefox: about:config | user.js – Firefox-Kompendium Teil10
2. Decentraleyes
Bevor wir uns mit der Installation und Konfiguration von Decentraleyes befassen, möchte ich kurz anhand eines Beispiels aufzeigen, was das Addon (im Hintergrund) leistet.
Du kannst den Blog aktiv unterstützen!
Unabhängig. Kritisch. Informativ. Praxisnah. Verständlich.
Die Arbeit von kuketz-blog.de wird vollständig durch Spenden unserer Leserschaft finanziert. Sei Teil unserer Community und unterstütze unsere Arbeit mit einer Spende.
2.1 Webseitenaufruf ohne Decentraleyes
Ein jeder von uns dürfte heutzutage mindestens einmal am Tag mit seinem Browser im Internet surfen. Allerdings sind wir uns oftmals nicht bewusst, was bei dieser eigentlich für uns alltäglichen Tätigkeit technisch geschieht. Nach der Eingabe einer Domain in die Adresszeile des Browsers wird die entsprechende Webseite vom Browser aufgerufen. Nach dem Erreichen der Webseite erhält der Browser entsprechende Informationen, welche Inhalte er laden soll. Nachdem der Ladevorgang abgeschlossen ist, stellt der Browser den Inhalt der Webseite in einer für den Nutzer lesbaren Form dar.
Welche komplexen Prozesse im Hintergrund notwendig sind, um eine Webseite im Browser darzustellen, können die meisten Nutzer vermutlich nicht einmal erahnen. Die dahinterliegende Technik arbeitet vielmehr meist völlig »geräuschlos«. Dabei ist nur den wenigsten bewusst, wie Webseitenbetreiber durch das Einbinden von externen Ressourcen, wie bspw. JavaScript oder Social-Media-Buttons, die Privatsphäre und insbesondere die Sicherheit ihrer Besucher leichtfertig aufs Spiel setzen.
Viele Webseiten binden bspw. JavaScript-Bibliotheken von Drittquellen (CDNs) wie Google oder Cloudflare ein – hosten diese also nicht selbst. Bei einem Besuch einer Webseite wird daher bspw. eine Verbindung zu
- ajax.googleapis.com
- code.jquery.com
- […]
aufgebaut und dort die entsprechende JavaScript-Ressource (bspw. jQuery) nachgeladen. Durch das Nachladen innerhalb des Browsers wird eure IP-Adresse oder auch HTTP-Headerinformationen an die Drittquelle übermittelt, die diese Informationen gerne zum Browser Fingerprinting »missbraucht«:
Beim Aufruf unserer Beispielwebseite hat der Betreiber externes JavaScript [1] vom Host »ajax.googleapis.com« in den Kontext der Webseite eingebunden. Der Browser wird diese Anfrage im Hintergrund bearbeiten und eine Verbindung zur Adresse »ajax.googleapis.com« aufbauen [2], um das JavaScript von Google nachzuladen. Bei diesem Vorgang übersendet der Browser eine ganze Reihe von Metadaten [3], wie die aktuell besuchte Webseite und die IP-Adresse, an die externe Quelle. Zum Schluss wird die Anfrage des Browsers bearbeitet und das JavaScript vom Host »ajax.googleapis.com« in den Kontext der Webseite [4] nachgeladen.
Insbesondere die Metadaten (Referer, IP-Adresse, usw.) nutzen CDNs oder Giganten wie Google, um den Anwender seitenübergreifend zu tracken bzw. durch das Internet zu verfolgen.
Hinweis
Welche negativen Auswirkungen mit der Einbindung externer Ressourcen (Bilder, JavaScript, etc.) einhergeht, könnt ihr im Detail in folgendem Beitrag nachlesen: Das kranke WWW: Stop using Google Web-Services.2.2 Webseitenaufruf mit Decentraleyes
Schauen wir uns den Verlauf nach der Installation von Decentraleyes noch einmal an:
Beim Aufruf unserer Beispielwebseite hat der Betreiber externes JavaScript [1] vom Host »ajax.googleapis.com« in den Kontext der Webseite eingebunden. Der Browser wird diese Anfrage im Hintergrund bearbeiten und eine Verbindung zur Adresse »ajax.googleapis.com« aufbauen [2], um das JavaScript von Google nachzuladen. Decentraleyes wird diesen Verbindungsaufbau allerdings »abfangen« und die JavaScript-Ressource lokal [3] zur Verfügung stellen. Anschließend wird der Browser das JavaScript in den Kontext der Webseite [4] nachladen – wie aufgezeigt allerdings von einer lokalen Quelle.
Zusammengefasst: Decentraleyes erkennt das Nachladen von JavaScript-Ressourcen via CDNs, kappt diesen Verbindungsversuch und lädt die Ressource lokal nach (sofern sie vorhanden ist). Das Addon beinhaltet neben einer Verbindungserkennung also eine ganze Reihe an JavaScript-Bibliotheken (bspw. jQuery, Scriptaculous oder AngularJS), die es dann ausliefert, sobald ein Request erkannt wird.
Die Vorteile von Decentraleyes kurz zusammengefasst:
- Privatsphäre: Zum Schutz der Privatsphäre kappt Decentraleyes die Verbindung zu CDNs, die JavaScript-Ressourcen ausliefern und darüber in der Lage sind, Nutzer seitenübergreifend zu Tracken.
- Geschwindigkeit: Das lokale Ausliefern von JavaScript ist erheblich schneller, als die Quellen über ein CDN zu laden.
- Benutzbarkeit: Kann Seiten (wieder) benutzbar machen, bei denen man bspw. das Nachladen von »ajax.googleapis.com« blockiert hat – und es jetzt wieder erlaubt, da die Ressource lokal eingebunden werden kann.
Version 2.0.3 von Decentraleyes erkennt den Verbindungsaufbau zu folgenden CDNs und liefert (falls vorhanden) die angefragte JavaScript-Ressource lokal aus:
- Google Hosted Libraries
- Microsoft Ajax CDN
- CDNJS (Cloudflare)
- jQuery CDN (MaxCDN)
- jsDelivr (MaxCDN)
- Yandex CDN
- Baidu CDN
- Sina Public Resources
- UpYun Libraries
3. Decentraleyes: Anfänger
Bevor wir mit der Installation und Konfiguration von Decentraleyes beginnen, möchte ich euch noch ein paar Hinweise mit auf den Weg geben:
- Grüne Wiese: Im Idealfall habt ihr euren Firefox neu installiert (oder ein neues Profil angelegt) und habt bisher lediglich den ersten Teil und zweiten Teil der Artikelserie umgesetzt.
- Ausmisten: Wer hingegen sein bestehendes Firefox-Profil als Ausgangspunkt nimmt, der sollte vor der Installation von Decentraleyes wissen, dass insbesondere die Nutzung von Adblockern dazu führen kann, dass Decentraleyes nicht wie vorgesehen funktioniert. Unter Ziffer 4.1 definieren wir (Fortgeschrittene) daher Ausnahmeregeln für uBlock Origin, dass ihr bereits im zweiten Teil der Serie kennenlernen durftet.
3.1 Installation
Wie bei Firefox üblich wird Decentraleyes am besten direkt über die Addon-Seite von Mozilla installiert. Folgt einfach diesem Link und klickt auf »+ Zu Firefox hinzufügen«.
Anschließend muss die Installation mit einem Klick auf »Hinzufügen« bestätigt werden:
Nach einer erfolgreichen Installation wird das Icon von Decentraleyes in der Symbolleiste (rechts oben im Eck) auftauchen:
Die Installation ist damit abgeschlossen und Decentraleyes ist bereits voll einsatzbereit. Über eine Test-Seite könnt ihr dies verifizieren:
Wer es ganz einfach haben möchte, muss keine weiteren Anpassungen vornehmen. Wer allerdings im zweiten Teil der Artikelserie uBlock Origin den Schritt zum »medium mode« gewagt hat, der sollte unbedingt weiterlesen.
4. Decentraleyes: Fortgeschrittene
Zur Erinnerung: Durch den Wechsel zum »medium mode« bei uBlock Origin verhindern / blockieren wir das Nachladen von JavaScript aus Drittquellen. Damit die in Decentraleyes integrierten JavaScript-Ressourcen ausgeliefert werden können, ist daher eine Anpassung von uBlock Origin notwendig. Wenn wir dies nicht tun, wird das Nachladen der lokalen JavaScript-Ressourcen von uBlock Origin einfach blockiert.
4.1 uBlock Origin anpassen
Öffnet zunächst das Dashboard von uBlock Origin und navigiert zum Tab »Meine Regeln«. Ergänzt rechts (Temporäre Regeln) folgende Zeilen:
* ajax.googleapis.com * noop * ajax.aspnetcdn.com * noop * ajax.microsoft.com * noop * cdnjs.cloudflare.com * noop * code.jquery.com * noop * cdn.jsdelivr.net * noop * yastatic.net * noop * yandex.st * noop * apps.bdimg.com * noop * libs.baidu.com * noop * lib.sinaapp.com * noop * upcdn.b0.upaiyun.com * noop * cdn.bootcss.com * noop * sdn.geekzu.org * noop * ajax.proxy.ustclug.org * noop
Anschließend klickt ihr zunächst auf »Speichern« und zum Schluss auf »<-Dauerhaft speichern«. Auf der linken Seite (Permanente Regeln) sollte es dann folgendermaßen aussehen:
Hinweis
Eine Liste mit aktualisierten Einträgen / Regeln könnt ihr hier finden.4.2 Decentraleyes anpassen
Mit der Anpassung von uBlock Origin erlauben wir den Verbindungsaufbau zu diversen CDN-Adressen. Diese Verbindungsversuche werden im Normalfall von Decentraleyes gekappt und die JavaScript-Ressource lokal an den Browser ausgeliefert – es kommt also keine Verbindung zu einer externen Quelle zustande.
Es gibt aber noch einen Sonderfall, den wir beachten müssen: Für den Fall, dass Decentraleyes eine JavaScript-Ressource nicht ausliefern kann (da schlicht nicht vorhanden / mitgeliefert), wird es eine Verbindung zu den in uBlock Origin erlaubten CDNs aufbauen und die JavaScript-Ressource von dort nachladen. Das möchten wir allerdings verhindern, da wir in Teil 2 via uBlock Origin definiert hatten, dass JavaScript aus Drittquellen nicht nachgeladen wird.
Öffnet daher die Einstellungen von Decentraleyes und aktiviert folgendes Häkchen:
- Blockiere Anfordern fehlender Inhalte: Abgefangene Anforderung unterbinden, falls angeforderte Datei nicht lokal verfügbar ist.
4.3 Erklärung der Anzeige
Abschließend werfen wir noch einen Blick auf die Anzeige von Decentraleyes, die sich mit einem Klick auf das Icon in der Symbolleiste aufrufen lässt:
Direkt am Icon in der Symbolleiste können wir oben rechts erkennen, wie viele JavaScript-Ressourcen Decentraleyes auf der jeweiligen Seite lokal ausliefert. In unserem Beispiel handelt es sich um die JavaScript-Ressource jQuery (v. 2.1.4), die die Webseite über das Google CDN (ajax.googleapis.com) nachladen würde.
5. Fazit
Angesicht der im WWW vorherrschenden Praxis, Ressourcen wie JavaScript von Drittanbietern einzubinden, wirft sich die Frage auf, ob sich Webseitenbetreiber mit den daraus resultierenden Konsequenzen für die Sicherheit und die Privatsphäre für sich und insbesondere ihrer Besucher ausreichend auseinandergesetzt haben.
Decentraleyes kann die »Verantwortungslosigkeit« der Webseitenbetreiber durch das lokale Ausliefern häufig verwendeter JavaScript-Ressourcen zumindest ein Stück weit minimieren. CDNs wie Google bieten ihre Dienste nicht aus reiner Nächstenliebe unentgeltlich an, sondern (meist) mit dem Ziel, die Nutzer im Internet seitenübergreifend zu tracken bzw. weitere Erkenntnisse aus den (Nutzer-)Daten zu gewinnen.
In den nachfolgenden Teilen der Serie »Firefox-Kompendium« werde ich euch weitere Firefox-Addons und Einstellungen vorstellen und diese aufeinander abstimmen.
Wenn du über aktuelle Beiträge informiert werden möchtest, hast du verschiedene Möglichkeiten, dem Blog zu folgen:
20 Ergänzungen zu “Firefox: Decentraleyes – Firefox-Kompendium Teil3”
Forum oder der Chat geeignete Anlaufstellen, um dein Anliegen zu diskutieren. Per E-Mail beantworte ich grundsätzlich keine (Support-)Anfragen – dazu fehlt mir einfach die Zeit. Kuketz-ForumAbschließender Hinweis
Blog-Beiträge erheben nicht den Anspruch auf ständige Aktualität und Richtigkeit wie Lexikoneinträge (z.B. Wikipedia), sondern beziehen sich wie Zeitungsartikel auf den Informationsstand zum Zeitpunkt des Redaktionsschlusses.Kritik, Anregungen oder Korrekturvorschläge zu den Beiträgen nehme ich gerne per E-Mail entgegen.
Hallo Mike,
vielen Dank für diesen abermals grandiosen Beitrag. Solche erklärten Übersichten helfen vor allem Leute wie mir, welche sich die Browser- und Addonkonfiguration oftmals ein wenig halbherzig (und stellenweise leider mit Wissenslücken behaftet) zusammengeklickt haben. Danke dafür.
Eine kurze Frage zu den von dir vorgeschlagenen Ausnahmen für uBlock Origin: Reicht es, falls man zusätzlich NoScript verwendet, dort bei diesen Ausnahmen nur die Option „Script“ zu erlauben? Oder können/sollen auch weitere Elemente (object, frame, etc) für diese Ausnahmen zugelassen werden?
Danke und viele Grüße,
Stefan
Ich bin mir aktuell unsicher, ob ich NoScript im Zuge der Serie überhaupt vorstellen werde oder auf die Kombination aus uBlock Origin und uMatrix setze. Die Frage kann ich dir aktuell nicht beantworten, da müsste ich mich selbst nochmal explizit damit befassen. Vielleicht weiß ein aktiver NoScript-Nutzer hier Rat.
Zu Punkt 3 Anfänger:
Es scheint, als ob beide Addons zusammen Komplikationen verursachen.
Sollte man sich nun entscheiden, ober man einen Adblocker ODER Decentraleyes nutzen sollte?
Oder kann man beides benutzen?
Wenn du wie in der Artikelserie beschrieben vorgehst, dann funktioniert beides im Verbund – so ist es ja auch gedacht.
Hallo,
auch hier vielen herzlichen Dank für die tolle Anleitung :).
Ich hätte auch noch einige Fragen zu
Woher kommen die lokalen Ressourcen?
Muss ich die runterladen und speichern oder wird das beim ersten Aufruf von decentraleyes selbst gemacht?
Wie sieht es aus, wenn die Ressourcen geupdatet werden? Muss ich das dann manuell machen?
Viele Grüße
Thomas
Du musst nichts machen. Die JavaScript-Ressourcen sind alle in Decentraleyes integriert (daher ist der Download auch vergleichsweise groß). Du musst nur eines tun: Decentraleyes regelmäßig (automatisch) updaten.
Vielen Dank für den Beitrag und die guten Erklärungen für den Einsatz der Erweiterung.
CDNs liefern ja nicht nur Javascript, sondern auch Bilder oder Schriften. Kann diese Erweiterung auch irgendwie gegen fonts.googleapis.com helfen?
Aktuell liefert Decentraleyes nur JavaScript aus. Für die Zukunft ist aber geplant, noch weitere Ressourcen auszuliefern.
Hi, danke für den Betrag.
Ein Frage hätte ich dennoch: wenn ich uMatrix in „hard mode“ betreibe, will ich nicht unbedingt die Regeln aus „noop“ dazu setzen und würde dementsprechend die einzelne Quellen nach und nach selbst in uMatrix erlauben. Komme ich dann damit auf das gleichen Ergebnis?
Grüße
romes
Die Testseite von Decentraleyes* verhält sich bei mir genau so, wie du es beschreibst:
– Sie meldet einen Fehler, wenn uMatrix eine Resource von ajax.googleapis.com blockt.
– Wenn ich uMatrix eine Ausnahme dafür gebe, meldet die Testseite Erfolg, und die Google-Resource wird in Decentraleyes als „lokal nachgeladen“ angezeigt.
* https://decentraleyes.org/test/
Das Addon «NoScript» hat sich mit dem Wechsel auf «Firefox Quantum» leider negativ verändert und ist unübersichtlich und unkomfortabel geworden. Vom ursprünglichen Funktionsumfang ist nur ein Bruchteil übrig geblieben und die Benutzerfreundlichkeit hat sehr gelitten. Selbst die von «NoScript» mitgebrachte „Positivliste“ muß unter Quantum umständlich Eintrag für Eintrag abgearbeitet werden, wenn der Nutzer die Standardeinstellungen nachbessern möchte. Kurz: Unter «Firefox Quantum» ist die Verwendung von «NoScript» im derzeitigen Zustand keine Option.
@Danilo Der Wechsel zu Quantum hatte zumindest den Vorteil, dass nunmehr ScriptSafe erreichbar ist. Ich finde, dass ScriptSafe dem Add-on NoScript überlegen ist (man muss sich aber bei ScritpSafe die Optionen näher anschauen und den sonstigen Browsereinstellungen entsprechend ändern).
Vielen Dank Mike für die wiederum tolle Anleitung.
Was mir nicht klar ist:
Du hattest im Dezember 2017 noch empfohlen beim FF esr zu bleiben.
Da lässt sich Decentraleyes aber nicht installieren (V. 52.x.x).
Die Zeiten ändern sich bekanntlich, daher die Frage, ob jetzt der Wechsel auf Quantum und Co.inzwischen doch die bessere Wahl ist – wenn man denn dort auch NoScript sinnvoll ersetzt. Oder welche Möglichkeit gäbe es als Ersatz für Decentraleyes bei FF esr?
Klar lässt es sich installieren. Steht sogar direkt auf der Addon-Seite als Hinweis:
Im Mai erscheint der Firefox ESR auf Basis von Quantum.
Danke für die super Anleitung!
Eine Nachfrage habe ich:
Die beiden Regeln, die wir in Teil 2 unter 3.2 [4] noch in uBlock Origin definiert hatten, werden nun in Teil 3 durch die Regeln unter 4.1 bzw. 4.2 ersetzt, richtig? Zumindest kann ich die beiden Zeilen in deinem Screenshot nicht mehr erkennen.
Diese werden nicht ersetzen, sondern sind weiterhin vorhanden. Sie sind nur im Screenshot nicht sichtbar.
Hat außer mir noch jemand das Problem, dass das DE Icon nicht wie in 3.1 beschrieben in der Symbolleiste erscheint – und auch nicht via „Anpassen“ hinzugefügt werden kann, da dort ebenfalls nicht aufgeführt? Aufruf der Testseite bestätigt zwar das einwandfreie Funktionieren des Addons, aber die Details/Statistiken entgehen mir dadurch (ja, ich weiß dass ich die auch über die „Preferences“ einsehen kann ;).
Gerne würde ich Decentraleyes nutzen, aber ich habe den Firefox für *Android* und dementsprechend auch uBlock Origin (hard mode) für *Android*. Bei „Meine Regeln“ gibt es weder die Felder „speichern“ und „dauerhaft speichern“ noch vermag ich zu erkennen *wie* man die von Ihnen genannten Regeln hinzufügen kann (damit Decentraleyes lokales Javascript beschaffen kann). Im WWW habe ich diesbezüglich keine Hilfe gefunden. Ich bitte um Rat!
Ein super Artikel! Ich finde NoScript für Quantum auch gewöhnungsbedürftig und umständlich. Du hast dich aber in der Artikelserie dafür entschieden, wäre es möglich trotzdem mal einen Artikel über uMatrix zu schreiben, um dessen Funktionen zu erklären. Falls man eine Alternative zu NoScript möchte. Vielen Dank!
Deine Frage wird bereits im Beitrag beantwortet. Vielleicht überlesen?