ITPのトラッキング防止機能一覧

#目次

 - [はじめに](#はじめに)
  - [ITPとは](#itpintelligent-tracking-preventionとは)
  - [本記事について](#本記事について)
  - [読み方](#読み方)
 - [機能一覧](#機能一覧)
  - [トラッカー判定機能一覧](#トラッカー判定機能一覧)
     - [トラッカー判定のための統計情報の収集 (ITP1.0)](#トラッカー判定のための統計情報の収集-itp10)
     - [リダイレクトドメインのトラッカー判定 (ITP2.0)](#リダイレクトドメインのトラッカー判定-itp20)
     - [共謀トラッカーのトラッカー判定 (ITP2.0)](#共謀トラッカーのトラッカー判定-itp20)
  - [トラッキング防止機能一覧](#トラッキング防止機能一覧)
     - [トラッカー判定されたドメインのCookieのブロック (ITP2.1)](#トラッカー判定されたドメインのcookieのブロック-itp21)
     - [クライアントサイドCookieの保持上限7日 (ITP2.1)](#クライアントサイドcookieの保持上限7日-itp21)
     - [リンクデコレーションを利用したCookieの保持上限1日 (ITP2.2)](#リンクデコレーションを利用したcookieの保持上限1日-itp22)
     - [全てのスクリプト書き込みが可能なデータの保持制限 (ITP2.3)](#全てのスクリプト書き込みが可能なデータの保持制限-itp23)
     - [JavaScriptで読みこまれるリファラのダウングレード (ITP2.3)](#javascriptで読みこまれるリファラのダウングレード-itp23)
     - [全ての3rd-Party-Cookieをブロック (ITP最新)](#全ての3rd-party-cookieをブロック-itp最新)
     - [全ての3rd-Partyに対するリファラのダウングレード (ITP最新)](#全ての3rd-partyに対するリファラのダウングレード-itp最新)

#はじめに

###ITP（Intelligent Tracking Prevention）とは
ユーザーの（主にweb上の行動履歴という観点の）プライバシーを保護する目的で、
アップルがアップル製品の標準ブラウザであるSafariに導入した、
Web上におけるトラッキング（ユーザーの判別/特定）を防止する機能。

具体的には、

Safari上で収集できる情報を用いて、
トラッキング機能を有すると推測できるドメインを判定し、
Cookie/LocalStrage/リンクデコレーション/リファラなどのデータの利用に制限をかける機能。

※詳しくしりたい方は以下記事を参照のこと。
[ITP1.0系-公式リリースの要約と解説](https://qiita.com/pipi0813/items/108d350b03a3679a3d92)

###本記事について
ITPによって施されているトラッキング防止機能一覧を記載する。
ITPのバージョンごとに解説した記事はあるが、
結局現在動いている機能をまとめた記事が見つからなかったためである。

また、本記事はITP機能を有する[Webkitの公式ブログ](https://webkit.org/blog/)から読み解いて整理したものであり、
実際に検証したものではないので注意のこと。
※Webkitは**Appleが中心となって開発**しているOSSで**Safariに搭載されている**レンダリングエンジンである。

###読み方

文中の「interact」はユーザーが行うタップ、クリック、テキスト入力といった操作を表す原文の語である。
「操作」と訳すと解釈を誤る可能性があるのでこの様にした。

現在（最新版のSafari）で運用されている機能のみ列挙する。（=撤廃された機能や仕様などは記載しない）

機能一覧について、以下の二つに分けて記載する。

 - トラッカー判定機能
 - トラッキング防止機能

前者はトラッカー判定有無がトラッキング防止機能の対象になるかに影響するため記載している。

後者については以下の形でデータを記載する。

 - どのデータが
 - どんな条件で
 - どんな制限を受けるのか

機能名には追加or更新時点のITPのバージョンを（）内に付記している。
但し、最新のITPのリリースについてはナンバリングが無かったため「最新」としている。

一定知識を有している読者を想定しているが、ITP固有の用語には必要に応じて別記事へのリンクをつけている。

#機能一覧

##トラッカー判定機能一覧

###トラッカー判定のための統計情報の収集 (ITP1.0)
Safariが各デバイス上でトラッカー判定のための統計情報を収集する。
主にユーザーのinteract情報やリソースのロードに関する情報である。
[詳しくはコチラ](https://qiita.com/pipi0813/items/108d350b03a3679a3d92#itpの仕組み)

###リダイレクトドメインのトラッカー判定 (ITP2.0)
ユーザーをリダイレクトするだけのドメインをトラッカーと判定する。
[詳しくはコチラ](https://qiita.com/pipi0813/items/6f4cf13adcece47249e4#first-party-bounce-trackersからの保護)

###共謀トラッカーのトラッカー判定 (ITP2.0)
複数のドメインでリダイレクトさせあい、ユーザーの特定を目的として情報を共有するドメイン群をすべてトラッカー判定する。
[詳しくはコチラ](https://qiita.com/pipi0813/items/6f4cf13adcece47249e4#トラッカー共謀からの保護)

##トラッキング防止機能一覧
###トラッカー判定されたドメインのCookieのブロック (ITP2.1)

 - 対象データ：Cookie
 - 適用条件：トラッカー判定されたドメインからSet-Cookieを受け取った場合
 - 制限内容：Cookieの保存を受け付けない

###クライアントサイドCookieの保持上限7日 (ITP2.1)

 - 対象データ：Cookie
 - 適用条件：JavaScriptによってCookieが保存される場合
 - 制限内容：保持期限を7日にする

###リンクデコレーションを利用したCookieの保持上限1日 (ITP2.2)

 - 対象データ：Cookie
 - 適用条件：以下条件を全て満たす場合
  - トラッカー判定されたドメインが別のドメインに誘導した場合
  - 最終的にたどり着いたURLにパラメータや識別子が付与されている場合
  - JavaScriptによってCookieが保存される場合
 - 制限内容：保持期限を1日にする

###全てのスクリプト書き込みが可能なデータの保持制限 (ITP2.3)

 - 対象データ：スクリプト書き込みが可能なwebサイトデータ(主にLocalStrageなど)
 - 適用条件：以下の条件を全て満たす場合
  - トラッカー判定されているウェブサイトから識別子やパラメータを伴って他のURLに誘導された場合
  - ユーザーが誘導された時から起算して7日間、該当のwebサイトとinteractしなかった場合
 - 制限内容：データを削除する

###JavaScriptで読みこまれるリファラのダウングレード (ITP2.3)

 - 対象データ：JavaScriptで読まれるリファラ
 - 適用条件：以下条件を全て満たす場合
  - トラッカー判定されたドメインによってユーザーが誘導された場合
  - リファラにリンクデコレーションがされている場合
 - 制限内容：読み込み時にリファラを[TLD+1](https://qiita.com/pipi0813/items/108d350b03a3679a3d92#itpの仕組み)にする

###全ての3rd-Party-Cookieをブロック (ITP最新)

 - 対象データ：Cookie
 - 適用条件：以下条件を全て満たす場合
  - 3rd-PartyドメインからSet-Cookieを受け取った場合
  - 以前に1st-Partyとして該当のドメインとinteractしていない場合
  - （補足：トラッカー判定の有無に依らない）
 - 制限内容：Cookieの保存を受け付けない

###全ての3rd-Partyに対するリファラのダウングレード (ITP最新)

 - 対象データ：リファラ
 - 適用条件：以下条件を全て満たす場合
  - 3rd-Partyドメインからリソースを得るためにリクエスト場合
  - 以前に1st-Partyとして該当のドメインとinteractしていない場合
  - （補足：トラッカー判定の有無に依らない）
 - 制限内容：リクエスト時送信される時にTLD+1の形にする
  - 例）「sub.example.com/product/1234」であれば「example.com」にする