evercookie
提供: セキュリティ
スポンサーリンク
evercookie とは、ブラウザの永続的な cookie を作る JavaScript API です。evercookieのゴールは、クライアントが標準のcookie, Flash Cookies(FlashのLocal Shared Object, LSO)やその他を削除したあとでも、クライアントを特定することです。supercookieの実装の1つです。
読み方
- evercookie
- えばー くっきー
概要
evercookieは、ユーザをしつこくトラッキングするためのsupercookieの実装です。
ブラウザのストレージメカニズム
- 標準の HTTP cookie
- Adobe Flashの Local Shared Object (ローカル共有ストレージ)
- Silverlight Isolated Storage
- CSS History Knocking
- HTTP Etags に cookie をストアする(バックエンドサーバが必要)
- Web cache に cookie をストアする(バックエンドサーバが必要)
- window.name caching
- Internet Explorer の userData ストレージ
- HTML5 Session Storage
- HTML5 Local Storage
- HTML5 Global Storage
- HTML5 Database Storage via SQLite
- HTML5 Canvas (Cookieの値として自動生成したRGBデータを保存します、 PNG 画像として強制キャッシュさせます(バックエンドサーバが必要)
- HTML5 IndexedDB
- Java JNLP PersistenceService
- Java exploit CVE-2013-0422
バックエンドサーバ
- node-evercookie
- Django Evercookie
ソースコード
使い方
<script type="text/javascript" src="evercookie.js"></script> <script> var ec = new evercookie(); // set a cookie "id" to "12345" // usage: ec.set(key, value) ec.set("id", "12345"); // retrieve a cookie called "id" (simply) ec.get("id", function(value) { alert("Cookie value is " + value) }); // or use a more advanced callback function for getting our cookie // the cookie value is the first param // an object containing the different storage methods // and returned cookie values is the second parameter function getCookie(best_candidate, all_candidates) { alert("The retrieved cookie is: " + best_candidate + "\n" + "You can see what each storage mechanism returned " + "by looping through the all_candidates object."); for (var item in all_candidates) document.write("Storage mechanism " + item + " returned: " + all_candidates[item] + "<br>"); } ec.get("id", getCookie); // we look for "candidates" based off the number of "cookies" that // come back matching since it's possible for mismatching cookies. // the best candidate is most likely the correct one </script>
関連項目
ツイート
スポンサーリンク