「evercookie」の版間の差分

提供: セキュリティ
移動: 案内検索
(ページの作成:「evercookie とは、ブラウザの永続的な cookie を作る JavaScript API です。evercookieのゴールは、クライアントが標準のHTTP cookie|c...」)
 
(相違点なし)

2014年12月14日 (日) 22:56時点における最新版

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>

関連項目