qrios

IT ist kurios!

Cached Canvas-Image als Cookie-Ersatz

3 Kommentare

Im Rahmen einer Recherche habe ich mich mal eingehender mit der Funktionsweise und Browser-Kompatibilität von Cookie-Replacements beschäftigt. Als einzig sicheres, performantes und valides Verfahren stellt sich Cached-Canvas-Image dar. Hier kurz die Funktionsweise:

Beim erstmaligen Besuch einer Site wird in ein Canvas-Element ein Bild mit einem Bitmuster geladen. Dieses Bild wird vom Server on the fly generiert und mit einem Cache-Stempel weit in der Zukunft an den Browser gesendet.

Ein Bitmuster mit der ID "aeaeaec9c9c94f4f4fc3c3c3ffffffcccccc1d1d1d919191ffffffaaaaaa"

Beim späteren Besuch lädt der Browser das Bitmuster-Bild aus dem Cache. Danach werden mittels JavaScript die Farbwerte für die Pixel des Bildes ermittelt und daraus zusammen mit einer eindeutigen ID, die der Server in die Seite geschrieben hat, an den Server gesendet, z.B. per weiteren Image-Load. Auf dem Server werden dann die eindeutige ID mit dem Profil der ID in dem Bitmuster-Bild verknüpft.

Eine Testimplementierung ergab, dass trotz der Verwendung von Canvas der ganze Prozess auf einem aktuellen Rechner nicht mehr als 1/10 Sekunde dauert und damit keine Hürde für den weitflächigen Einsatz darstellt. Interessant ist, dass dieses Verfahren auch Site-übergreifend funktioniert und damit die Beschränkung von Cookies bzgl. Domains aushebelt.

Eine Abwandlung dieses Verfahren würde auch ohne Canvas funktionieren müsste dann aber eine erhebliche Anzahl von Requests auf ungecachte Images durchführen.

In unseren Tests zeigen die Browser Safari, Chrome und Firefox alle unisono das gleiche Verhalten: die ID wird korrekt aus dem Bitmuster ermittelt und somit der Browser ohne Cookie identifizierbar.

Anti-Tracking-Tools wie Ghostery können ein solches Vorgehen auf einer Web-Seite nicht erkennen und damit auch nicht unterbinden. Es hilft einzig das regelmäßige Löschen des Browser-Caches oder das Abschalten von JavaScript.


Written by qrios

January 4th, 2012 at 4:19 pm

Posted in analytics,web

3 Responses to 'Cached Canvas-Image als Cookie-Ersatz'

Subscribe to comments with RSS or TrackBack to 'Cached Canvas-Image als Cookie-Ersatz'.

  1. Ist das beschriebene Verfahren das gleiche, was evecookie verwendet? Ich hab versucht bei denen im Code durchzusteigen. War mir aber zu hoch.

    Wie liest man denn den Farbwert eines Pixels in einem Bild? Hab nichts gefunden.

    roller

    5 Jan 12 at 3:37 pm

  2. Eine Möglichkeit von der ich letzten nach der AJAX User Group London gehört habe, ist die Metadaten der image files zu verwenden.
    Noch nicht versucht, aber es könnte das kodieren der bits obsolet machen?

    Steffen

    7 Jan 12 at 9:53 pm

  3. [...] Während die bisher beschriebenen Verfahren darauf basieren, dass der WebServer Daten abfragt, die unabhängig von ihm existieren, verwenden weitergehende Techniken Methoden, die die relevante Information zuvor auf dem Rechner ablegen. Insofern fallen diese Techniken direkt in den Bereich des Cookie-Ersatzes. Basis aller dieser Verfahren ist der Browser-Cache. Eine sehr simple Methode ist die Übermittlung von IDs als Bilder, die dann gecached werden und dem Server beim nächsten Besuch ermöglichen, die ID wiederherzustellen. [...]

Leave a Reply