最近、私はこのpdf研究に出くわしました(それについてはすでにHabréに関する記事がありました)、それを読んだ後、私はF-Cacheを使用するより興味深い方法を探すことにしました。客観的に、彼らの正しい心の誰も彼らのウェブサイトにリダイレクトを伴う計画を置くことはありません。これはリークですが、実際よりも理論的に興味深いリークです(IMHO)。
目標の概要を説明し(javascriptを介してF-Cacheをテストする方法を見つけること)、探し始めました。実験中に、これを行うためのいくつかの方法を特定しましたが、私の意見では、最も興味深い方法について説明します。
事前に警告します-これはクロスブラウザソリューションではありません。現時点では、デスクトップクロームでのみテストしています。
予備テストはここで行うことができます:https://favicon-leak.site/
使い方
Chromiumには、ディスクとメモリの2種類のリソースキャッシュがあります。多くの人が推測しているように、ディスクキャッシュはリソースの永続的なストレージですが、独自の読み取り遅延(1ミリ秒以上)があります。次に、メモリキャッシュは、頻繁に使用されるリソースの一時的な保存に使用され、平均して、読み取りは瞬時に行われます(0ミリ秒)。したがって、リソースをメモリキャッシュに配置することにより、ブラウザはディスクからの読み取り回数を減らし、リソース自体の再読み込みの速度を上げます。
<img>を介して最初に画像をロードするとき、画像はsrcを介してロードされるか、ディスクキャッシュから取得されます。どちらの場合も、この画像はほとんどの場合メモリキャッシュに配置されます。このJavaScriptコードを検討してください。
var img = new Image();
img.src = some_image_url;
if (img.complete && img.height + img.width > 0) {
// TRUE, memory cache
}
メモリキャッシュ内の画像の存在を確認できるのはこのコードです。このことから、次の結論を導き出すことができます。<img>を少なくとも2回ロードすると、2回目に画像をメモリキャッシュからロードする必要があります。
<link rel = "icon">タグの動作は<img>とは異なり、1つのイメージをリロードすると、常にディスクから読み取られます。
主な発見は、このブラウザの動作でした。
, <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/
自動化されたクロムを使用して、人気のあるサイトのファビコンリンクの小さなリストをまとめました。https://favicon-leak.site/は、このリストからアイコンをチェックします。おそらく、この記事を読むまでに、一部のリンクは古くなり、偽陰性の結果が返されます。