フロントエンドへの持続的データは永久にデータを削除するか、削除後に再開することが困難な場合がそうすることを、フロントエンドに格納されます。evercookie - 記憶されたデータは、「ゾンビデータ」として理解することができる、次のように永続的な遠位の方法を記載しています。
I.はじめに
サミー・カムカーによってevercookie(米国白い帽子のハッカー、セキュリティ研究者が)クッキーは、まだデータのセットを介して取得することができた後、ユーザーがなどの標準的なクッキー、フラッシュをクリアした場合でも、その目的は、永続的なCookieで、JSAPIのセットを開発し、履歴書にクリアクッキーから(比較的基本的にすべての次元、アクションの再書き込みを復元し、狭めます)。
第二に、原則
それであれば、データは、データをフェッチすることができるように、各次元のブラウザにデータを書き込み、それが様々な寸法から取得されたときに読み出すことです。
より強力な、これがある:1、非常に大きな寸法、普通のユーザーのストレージがきれいに困難であり、図2に示すように、データはデータを消去するには時間がかかりますA真のゾンビクッキー、復元されました。
ここでは寸法、及び方法やアイデアに格納されたデータを読み出します。
三、evercookieストアデータ外形寸法
1、標準のHTTPクッキー
evercookieのdocument.cookieは、データのこの部分は比較的容易削除するには、そのようなブラウザのクッキーをクリアするようである、それはそれで直接取得されたデータは、何も言わないようにして存在する、クッキーを共有する二つ上のスクリプトの設定などを、JSポイント:
-
HTTPリクエストは、ルートドメインとすべてのクッキーのドメインの下に来て、根はここにCSRF。
-
JSクッキーは通常のクロスパスクッキーの使用、現在のドメインおよび電流経路にデフォルトで設定され、パスフィールドを設定するために注意を払うようにしてください。
2、フラッシュクッキー
evercookieは、データがローカルオブジェクトのフラッシュに格納されている場合にのみ消去可能なフラッシュメモリに対応するファイルを削除し、使用され、Flashファイルを提供します
3、のlocalStorage、のsessionStorage、globalStorage
4、OpenDatabaseメソッド
HTML5 WebSQLデータベースがローカルに格納されたセッションストレージローカルストレージとによる種々のブラウザの実装に、多数のデータを操作するための強化構造を理解することができる、WebSQL仕様が廃棄されました。
5、のIndexedDB
ブラウザは、データベース永続的に、よりリレーショナルデータベース、SQLクエリデータのようなデータを格納し、より多くのNoSQLデータベースのようIndexDB WebSQL、のIndexedDBを比較し、WebSQLを建て。
6、ETagをストレージ
ETagのは、バックエンドストレージに依存する必要があり、原則の使用は、サーバがETagのタグを設定されている場合は、要求の応答時間にブラウザの最初の訪問は、ブラウザが自動的にETagとIF-NONE-MATCHアップ(2番目の訪問を取るときであります同じ値)は、限りデータはETagの値に存在しているとして、直接バックリンクそれにIF-NONE-MATCHフィールドにデータをチェックするために時間がかかります
7、カバーウェブ
HTTPクッキーを強化するの一種である、それがバックグラウンドを通じてクッキーの有効期限を設定することと同じですルックevercookieのアイデア
8、silvelrightクライアント店
silvelrightもローカルストレージである、あなたはフラッシュに似たローカルプレゼンスデータを、指示することができますクロスブラウザを得ることができ、あなたはSilverlightのプラグインをインストールする必要があり、sliverlightでのダウンロードの.xapコンパイルファイルは理解していない、興味のある学生は、自分で勉強することができます。
ローカルに保存されている9、Javaアプリケーション
10、IEが格納されているのuserData
11、window.name
window.nameウィンドウの非常に特別なプロパティは、2つの特性を有する、提供されてもよいです。
-
消えませんページを更新window.nameセットした後、
-
iframe srcがcontentWindow.nameを取得srcで1から別のものに変更されません。
evercookieは、限りページだけのクリーンアップの上にページを更新しないよう変更されません少しの使用であり、
12、<A>タグメモリアクセス状況履歴
浏览器中的 <a> 标签有个特性, 同一个浏览器被访问过后状态会变成 "visited" 状态,一般只有清理浏览器浏览记录才会消失,evercookie利用了这点进行存储。
简单说下思路:
-
构造<a>标签并预设visited样式(a:visited)作为访问校验值;
-
构造http请求,请求的地址为设置的键以及值的各个字符(多个http,个数是值的长度);
-
写数据通过构造iframe对上面的http请求进行一次访问;
-
读数据用键和一个字符构造一个链接赋予<a>标签的href,获取<a>标签的样式与预设visited样式进行
-
直接将http请求赋给<a>标签的href,获取如果样式为预设visited的样式说明这个http请求访问过,解出字符;
说明:2中设置的值是个encode后的值,最后一步解出的字符拼装后需要decode后才能获取到原来的值,evercookie里面的实现很有意思,有兴趣的可以看下。
四、读数据
evercookie读数据只说一点就可以了,它的思想并不是从任意维度获取到数据就直接返回结果,而是要将所有设置的维度全部取出进行最优解查找,可以防止部分数据被篡改导致的数据异常;也带来一个问题,因为很多都是异步获取,比如数据库、e-tag等,那么获取数据就不是立即获取,会有一部分等待时长。
五、缺点和注意事项:
Evercookie可能会给您或您的用户带来问题。
某些存储机制涉及在客户端浏览器中加载Silverlight或Flash。在某些机器上,这可能是一个非常缓慢的过程,有很多磁盘抖动。在较旧的移动设备上,这可能会使您的网站无法使用。
CSS历史记录首次设置cookie时,敲门可能会导致大量HTTP请求。
在某些圈子里,使用Evercookie被认为是粗鲁的。在生产中使用Evercookie时,请考虑您的声誉和受众。
浏览器供应商正在尽最大努力填补Evercookie利用的许多漏洞。这对互联网来说是一件好事,但它意味着今天有效的东西明天可能效果不好。
您自己决定使用Evercookie。做出明智的选择。