Recentemente me deparei com esse estudo em pdf (já havia um artigo sobre o Habré sobre ele), depois de lê-lo, decidi procurar maneiras mais interessantes de usar o F-Cache. Objetivamente, ninguém em sã consciência colocará um esquema de redirecionamentos em seu site. Este é um vazamento, mas um vazamento de interesse mais teórico do que prático (IMHO).
Delineei um objetivo (encontrar uma maneira de testar o F-Cache via javascript) e comecei a procurar. Durante os experimentos, identifiquei várias maneiras de fazer isso, mas vou descrever a mais interessante, na minha opinião.
Aviso com antecedência - esta não é uma solução para vários navegadores. No momento, eu só testei no Chrome para desktop.
O teste preliminar pode ser feito aqui: https://favicon-leak.site/
Como funciona
O Chromium tem dois tipos de caches de recursos: disco e memória. Como muitos já imaginaram, o cache de disco é um armazenamento permanente de recursos, mas com seu próprio atraso de leitura (1+ ms). Por sua vez, o cache de memória é utilizado para armazenamento temporário de recursos utilizados com frequência, e as leituras, em média, são instantâneas (0 ms). Assim, ao colocar um recurso no cache de memória, o navegador reduz o número de leituras do disco e aumenta a velocidade de recarregamento dos próprios recursos.
Quando carregamos pela primeira vez uma imagem via <img>, ela será carregada via src ou obtida do cache de disco. Em ambos os casos, essa imagem é geralmente colocada no cache de memória. Considere este código javascript:
var img = new Image();
img.src = some_image_url;
if (img.complete && img.height + img.width > 0) {
// TRUE, memory cache
}
É este código que permite verificar a presença de uma imagem no cache de memória. A partir disso, podemos tirar a seguinte conclusão: se você carregar <img> pelo menos duas vezes, na segunda vez a imagem deve ser carregada do cache de memória.
O comportamento da tag <link rel = "icon"> é diferente de <img> e recarregar uma imagem sempre a lê do disco:
A principal descoberta foi este comportamento do navegador:
, <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/
Usando o cromo automatizado, reuni uma pequena lista de links favicon para sites populares. https://favicon-leak.site/ verifica os ícones desta lista. Talvez, no momento em que você ler este artigo, alguns links estejam desatualizados e retornem um resultado falso negativo.