Neuer Browserverlauf durch Favicon

Kürzlich bin ich auf diese PDF- Studie gestoßen (es gab bereits einen Artikel über Habré). Nachdem ich sie gelesen hatte, entschied ich mich, nach interessanteren Möglichkeiten für die Verwendung von F-Cache zu suchen. Objektiv gesehen wird niemand, der bei klarem Verstand ist, ein Schema mit Weiterleitungen auf seiner Website veröffentlichen. Dies ist ein Leck, aber ein Leck von mehr theoretischem Interesse als praktisch (IMHO).





Umriss ein Ziel (um einen Weg zu finden, um F-Cache über Javascript zu testen) und begann zu suchen. Während der Experimente habe ich verschiedene Möglichkeiten identifiziert, aber ich werde meiner Meinung nach die interessanteste beschreiben.





Ich warne Sie im Voraus - dies ist keine browserübergreifende Lösung. Im Moment habe ich es nur auf Desktop-Chrom getestet.





Der vorläufige Test kann hier durchgeführt werden: https://favicon-leak.site/





Wie es funktioniert

Chromium verfügt über zwei Arten von Ressourcen-Caches: Festplatte und Speicher. Wie viele vermutet haben, ist der Festplatten-Cache eine permanente Speicherung von Ressourcen, jedoch mit einer eigenen Leseverzögerung (1+ ms). Der Speichercache wird wiederum zum temporären Speichern häufig verwendeter Ressourcen verwendet, und die Lesevorgänge erfolgen im Durchschnitt sofort (0 ms). Durch Platzieren einer Ressource im Speichercache reduziert der Browser die Anzahl der Lesevorgänge von der Festplatte und erhöht die Geschwindigkeit des erneuten Ladens der Ressourcen selbst.





Wenn wir ein Bild zum ersten Mal über <img> laden, wird es entweder über src geladen oder aus dem Festplatten-Cache entnommen. In beiden Fällen wird dieses Bild am häufigsten im Speichercache abgelegt. Betrachten Sie diesen Javascript-Code:





var img = new Image();
img.src = some_image_url;
if (img.complete && img.height + img.width > 0) {
	//   TRUE,        memory cache
}
      
      



Mit diesem Code können Sie das Vorhandensein eines Bildes im Speichercache überprüfen. Daraus können wir die folgende Schlussfolgerung ziehen: Wenn Sie <img> mindestens zweimal laden, sollte das Bild beim zweiten Mal aus dem Speichercache geladen werden.





<img> + <img> + <img> + <img>
<img> + <img> + <img> + <img>

Das Verhalten des <link rel = "icon"> -Tags unterscheidet sich von <img>, und beim erneuten Laden eines Bildes wird es immer von der Festplatte gelesen:





<link> + <link> + <link> + <link>
<link> + <link> + <link> + <link>

Der Schlüsselfund war dieses Browserverhalten:





<img> + <img> + <link> + <img>
<img> + <img> + <link> + <img>

, <link>, disk cache <img> ( memory). , F-Cache. ! <link> F-Cache, , memory cache, . , , F-Cache . ,

<img> + <img> + <link> + <img> <— , , F-Cache .. memory cache. , F-Cache.





, 100%- , .. <link>(, ), setTimeout. timeout, , <link> .





F-Cache

F-Cache , , . F-Cache cache policy -. F-Cache read-only .





https://favicon-leak.site/

Mit automatisiertem Chrom habe ich eine kleine Liste von Favicon-Links für beliebte Websites zusammengestellt. https://favicon-leak.site/ überprüft Symbole aus dieser Liste. Wenn Sie diesen Artikel lesen, sind einige Links möglicherweise veraltet und geben ein falsch negatives Ergebnis zurück.





Code auf Github








All Articles