ITP まとめ「3rd フルブロックの次はCNAME対策もターゲットに😱」随時更新！

Apple社が打ち出した広告トラッキング防止機能であるITP機能（Intelligent　Tracking　Prevention）。

## 更新情報

:point_up: 2024.01.15
Chromeバージョン120に3rdPartyCookie仕様についての言及あり。
[Third-party cookie phaseout](https://developer.chrome.com/blog/new-in-devtools-120?utm_source=devtools&hl=ja#3pc)
> The Issues panel now warns you about the cookies that will be affected by the upcoming deprecation and phaseout of third-party cookies.
> 「問題」パネルでは、今後予定されているサードパーティークッキーの非推奨および段階的廃止の影響を受けるクッキーについて警告するようになりました。

:point_up: 2021.07.15
「PCM」・「ARAPI」などCookieレスに向けた新技術の話題が増えてきております。

:point_up: 2021.01.16
[新記事：【Apple】ITP対策の終着地点！衝撃の「DNSの委任・委譲」](https://qiita.com/emacs_hhkb/items/c4a4c4e407026230903f)
を書きました。ご覧ください。

:point_up: 2020.10.09
[Safari 14.1から「CNAME対策」がターゲットに](#cnameトラッキング)

:point_up: 2020.04.16
[ITPの終焉「3rd Party 全ブロック」の登場](#itp-full-third-party-cookie-blocking-and-more---2020年3月)

:point_up: 2020.01.19
[CNAMEトラッキングの対抗策の記事が登場](#広告会社の対応方法)

:point_up: 2019.12.23
[「各企業の対策指針のまとめ」のUSERGRAMを追加](#各企業の対策指針のまとめ)

:point_up: 2019.11.22
[「各企業の対策指針のまとめ」のリストを追加](#各企業の対策指針のまとめ)

:point_up: 2019.10.17
[「広告会社の対応方法」の説明文を追加](#広告会社の対応方法)

:point_up: 2019.09.23
[ITP2.3](#itp-23---2019年9月)の発表。**トラッカー判定されたドメインのローカルストレージ有効期間が７日間に制限 & リファラのダウングレード**

[ITP1.0 - 2017年9月](#itp-10---2017年9月)
[ITP1.1 - 2018年3月](#itp-11---2018年3月)
[ITP2.0 - 2018年9月](#itp-20---2018年9月)
[ITP2.1 - 2019年3月](#itp-21---2019年3月)
[ITP2.2 - 2019年4月](#itp-22---2019年4月)
[ITP2.3 - 2019年9月](#itp-23---2019年9月)
[ITPフル - 2020年3月](#itp-full-third-party-cookie-blocking-and-more---2020年3月)

# ITP 1.0 - 2017年9月

| iOS |
|:-----------:|
| iOS 11  |

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26033/2d74cc86-5223-7c48-9e18-b1885e2506a8.png)

## 内容

- 3rd Party Cookie が１日（２４時間）で利用不可状態になる
  - その後３０日で削除される
- 「過去24時間ではなく過去30日間にアクセスした場合」Cookie は保持されるがパーテション化される
  - パーティション化されたCookieは`トラッカーCookie`と判断される
- iOS11 以降、デフォルトのSafari端末設定が『サイト越えトラッキングを防ぐ』となる
- 影響はCookieが ITP によってトラッカーCookieであると識別された場合のみ

# ITP 1.1 - 2018年3月

| iOS |
|:--------:|
| iOS 11  |

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26033/975203a3-c57b-237e-5610-c152fa175320.png)

## 内容

- ITP 1.0 でパーティション保有されていた Cookie がセッション Cookie として扱われディスク永続不可になる
  - その後３０日で削除される。そしてそれ以降新たに追加することも不可
- Storage Access APIを使えばパーティション化されていない Cookie にアクセス可能

> ユーザが interacts (なんらかの操作)を行なっている場合は、 3rd Party に対して 1st party cookie にアクセスすることを許すのが Storage Access API.
これは、 cross origin iframe sandbox に対して allow-storage-access-by-user-activation を有効にすると document.hasStorageAccess() and document.requestStorageAccess() が使える。
[[itp] storage access api](https://github.com/Jxck/jxck.io/blob/master/blog.jxck.io/drafts/storage-access-api-under-itp.md)

# ITP 2.0 - 2018年9月

| iOS | mac OS |
|:---------:|:---------:|
| iOS 12  |  macOS High Sierra and Mojave|

iOS 12のiPhone, iPadと、macOS MojaveのMac

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26033/706982bb-4f8a-0649-ec85-09cfaaac85db.png)

## 内容

- 3rd Party Cookie が即座にパーティション化される。（実質、即座に利用不可）
  - その後３０日で削除される。そしてそれ以降新たに追加する事も不可
- Storage Access APIを使えばパーティション化されていない Cookie にアクセス可能。
- トラッカーCookieドメインサーバへのリファラ内容のダウングレード

> リファラ内容ダウングレードの詳細
>> ユーザーが https://store.example/baby-products/strollers/deluxe-navy-blue.htmlにアクセスし、そのページがtrackerOne.exampleからリソースをロードするとします。 ITP 2.0以前では、trackerOne.exampleへのリクエストには完全なリファラー「https://store.example/baby/strollers/deluxe-stroller-navy-blue.html」が含まれていたため、サードパーティにユーザーに関する多くの情報が明らかになります。ITP 2.0では、リファラーは「https://store.example/」に縮小されます。

ITP 1.0 からの大きな変更点としまして、ターゲティング Cookie と識別された場合にその Cookie は 24時間後ではなく即座に利用ができなくなるよう変更されました。

## アドバイス

> Developer Advice
Avoid making unnecessary redirects to domains that are likely to be classified as having tracking ability.
>> 開発者のアドバイス
トラッキング機能があると分類される可能性が高いドメインへの不要なリダイレクトを行わないでください。

# ITP 2.1 - 2019年3月

| iOS | mac OS |
|:---------:|:---------:|
| iOS 12.2  |  macOS High Sierra and Mojave|

## 内容

### 1st Party Cookie の制限（７日間）

Cookie のパーティション化（特別な保持）をなくし単純に削除されるようになる

- クライアント（JavaScript）側から埋め込まれた Cookie の有効期間が７日間に制限される
  - 逆に言うと「サーバサイドから埋め込まれた Cookie」は影響を受けない
- Storage Access APIを使えば Cookie にアクセス可能

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26033/ccab6f44-5790-d762-88ab-a64d5762ffe3.png)

# ITP 2.2 - 2019年4月

| iOS | mac OS |
|:---------:|:---------:|
| iOS 12.3  |  macOS10.14.5 Mojave |

## 内容

### 1st Party Cookie の制限（２４時間）

クライアント（JavaScript）側から埋め込まれた 1st Cookie の有効期間が以下の条件に当てはまる場合１日（２４時間）に制限される

  - 条件1. クロスサイトトラッキング機能があると分類されたドメインAからドメインBにユーザを誘導した場合
  - 条件2. ドメインBへの誘導時のURLにパラメタやフラグメント識別子が付与されている

# ITP 2.3 - 2019年9月

| iOS | mac OS | iPadOS |
|:---------:|:---------:|:---------:|
| iOS 13  | Safari 13 on macOS | the iPadOS beta |

## 一部翻訳

>Our previous release, ITP 2.2, focused specifically on the abuse of so-called link decoration for the purposes of cross-site tracking. With ITP 2.2, when a webpage is navigated to from a domain classified by ITP and the landing URL has a query string or fragment, the expiry of persistent client-side cookies created on that page is 24 hours.

>> ITP 2.2 ではトラッキングを目的としたリンクやリダイレクト時のパラメタおよび識別子等の付与によるトラッカードメイン判定および制限を行うロジックを加えた。そしてクライアント側で作成される Cookie の有効期間を２４時間とした。

> Unfortunately, we see continued abuse of link decoration, so ITP 2.3 takes two new steps to combat this.
>> それでもなお改善されないのでITP 2.3 を導入した

> Since ITP 2.2, several trackers have announced their move from first-party cookies to alternate first-party storage such as LocalStorage. ITP 2.3 counteracts this in the following way:

## 内容

### ローカルストレージの制限

以下の内容を満たすときローカルストレージ（LocalStorage）が即時削除される

- トラッカードメインからクエリ文字列や識別子を含んでLPページに着地した場合（削除対象ドメインとしてマーク）
- LPページに遷移後、7日間Safariを操作しないとCookie以外のWebストレージデータはすべて即時削除

### リファラのダウングレード

トラッカードメインから遷移した場合、LPサイトで取得できるリファラ情報がダウングレードされる。

```
https：//sub.social.example/some/path/？clickID=0123456789
から流入したとしても、リファラーで取得できる情報は
https：//social.example
となり、取得できるサブドメインがダウングレードされる。
```

この施策が行われた理由としては下記が考えられます。

トラッキングを目的としたリンク等にパラメタ等を含めずに、リファラにトラッキング用のパラメタ等が付与されるような形にわざと行う。

という手法を撤廃させるため。

### 補足

#### HTTP Only Cookie に関して（ITP 2.1 にて触れられた内容）

```
Set-Cookie: ExampleSessionID=a66e30012cc49846; path=/; HttpOnly
```

「HTTP Only Cookie」は以下の２つの効果があります。

- HttpOnly CookieはJavaScriptに公開されません。 つまり、Webサイトでのトラッキングスクリプトまたはクロスサイトスクリプティング攻撃では、これらのCookieの内容を読み取ったり、漏えいさせたりすることはできません。
- HttpOnly Cookieは、WebKitのWebコンテンツプロセスにコピーされません。 これは、これらのCookieのコンテンツを盗む可能性のある投機的実行攻撃の範囲外であることを意味します。

# ITP 「Full Third-Party Cookie Blocking and More」 - 2020年3月

| iOS・iPad | mac OS | 
|:---------:|:---------:|
| iOS 13.4  | Safari 13.1


とうとう 3rd Party Cookie の全ブロックがきてしまいました。

## 一部翻訳

> Cookies for cross-site resources are now blocked by default across the board. This is a significant improvement for privacy since it removes any sense of exceptions or “a little bit of cross-site tracking is allowed.”
>> クロスサイトリソースのCookieは、デフォルトで全面的にブロックされるようになりました。 これにより、例外や「サイト間のわずかな追跡が許可される」という感覚がなくなるため、プライバシーが大幅に向上します。

> Paves the Way For Other Browsers
Safari continues to pave the way for privacy on the web, this time as the first mainstream browser to fully block third-party cookies by default. As far as we know, only the Tor Browser has featured full third-party cookie blocking by default before Safari, but Brave just has a few exceptions left in its blocking so in practice they are in the same good place. We know Chrome wants this behavior too and they announced that they’ll be shipping it by 2022.
>> Safariは引き続き、Web上のプライバシーへの道を開きます。今回は、デフォルトでサードパーティのCookieを完全にブロックする最初のメインストリームブラウザです。 私たちの知る限りでは、Safariより前のバージョンでは、TorブラウザーのみがデフォルトでフルサードパーティのCookieブロッキングを備えていましたが、Braveにはいくつかの例外があり、実際には同じ場所にあります。 Chromeもこの動作を望んでいることを知っており、2022年までに出荷することを発表しました。

## 内容

### 3rd Party Cookie の完全ブロック

文字通り今回のバージョンアップにて「3rd Party Cookieが完全ブロック」される事になります。これまでブロック対象であった「ITP制限が適用されるための条件」というルールがなくなります。**完全ブロック** になります。

### ストレージの制限

以下のストレージに対しても最後のインタラクション（操作）から７日間経過すると、強制的に内容が削除されるようになります。（ITP 2.3 では対象は LocalStorage のみでした）

- Indexed DB
- LocalStorage
- Media keys
- SessionStorage
- Service Worker registrations and cache

#### 1st Party Cookie と JavaScript について

「トラッカー判定ドメインからパラメタ付きで（リダイレクトし）LPに到着。」 というパターンにおいて、LPにてパラメタを取得しJavaScript の document.cookie を利用し 1st Party Cookie として埋め込みを行ったとしても、現在は保存期間は１日しかもちません。
（これもおそらく時間の問題で制限されそうな匂いがします）

### リファラのダウングレード

JavaScript でリファラを取得する `document.referer` における取得内容がホスト名のみにダウングレードされます。URLパスやパラメタが取得できなくなります。

---


# CNAMEトラッキング

2020.10.22 CNAMEも対策されそうです。（Safari 14.1から）

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">ITP &quot;CNAME cloaking&quot; mitigation now ON by default in Safari Technology Preview 114 (on Big Sur), without a flag to disable it. Says &quot;Safari 14.1&quot; so might not make its way into normal Safari this year? <a href="https://t.co/LN2SZwUbag">pic.twitter.com/LN2SZwUbag</a></p>&mdash; Antoine Bourlon (@kyotonio) <a href="https://twitter.com/kyotonio/status/1314360012127391744?ref_src=twsrc%5Etfw">October 9, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

--- 

### 注意：CNAME締め付け後、以下内容が通用しなくなります。

2019年10月現在、ITP2.3においてローカルストレージの締め出しまで食らった結果、広告ASPはドメインのDNS設定を利用した「CNAME」対策を行っているようです。要は広告主（クライアント）のドメインのDNS設定を変更してもらい、新たにトラッキング用のサブドメインを切ってもらいます。（CNAME設定）そして、そのサブドメインへのアクセスを広告ASPサーバに仕向けることで、1st Party Cookie をサーバ側から埋め込むことが可能になる。という手法です。

これにおいては「クライアントドメインのDNSをクライアント側の担当者に調整してもらう。」という最終手段に挑んでいるという具合です。
確かにサーバ側から埋め込んだ1st Party CookieはITPの影響をうけないため、実質有効期間等の影響とは無縁になります。

# 各企業の対策指針のまとめ

### 注意：CNAME締め付け後、以下内容が通用しなくなります。

ITP2.3の対応方法も先にあげたドメイン（DNS：CNAME）対応によるものがちらほらと増えてきております。

### ITP2.3

- [2019/12/24 ITP 2.3 に対する USERGRAM の影響について](https://help.usergram.info/article/447-2019-12-24)
- [Safari ITP2.3に関するアドエビスの対応と影響について | AD EBiS サポートサイト](https://support.ebis.ne.jp/all_articles/33499/)
- [ITP2.3の影響と今後の対策について｜リーフワークスBlog](https://blog.leafworks.jp/article/30011)
- [ITP2.3に対するKARTEの対応や影響について](https://support.karte.io/post/1N6RpkqOCDt9QenDg7HAd6)
- [afbのITP対策について　これまでの対応とこれからの対策  |  まーくんのアフィリエイト学校](https://www.afi-b.com/beginner/archives/tsushin/8637)


### ITP2.x

- [ITPの概要と対策について | 株式会社マルジュ](https://www.maru.jp/itp/)
- [【重要】ITP2.0がアドエビスへ与える影響と対応に関して(※2018/9/3 更新) | AD EBiS サポートサイト](https://support.ebis.ne.jp/information/22490/)
- [Safari ブラウザの ITP 2.1 対応リリース実施のご報告 – WebAntenna活用ノート](https://help.webantenna.info/10392/)
- [オプト提供の広告効果測定ツール「ADPLAN」、Safari ブラウザへのトラッキング防止機能 ITP2.1への対策方針のお知らせ｜株式会社オプトホールディングのプレスリリース](https://prtimes.jp/main/html/rd/p/000000554.000014848.html)
- [Safari ブラウザの ITP 2.1 対応について | xross data](https://www.xdata.jp/news/2271.html)
- [Apple社が発表したITP2.1に対応すべく、LocalStorageでのCookie保管を導入しました。ネクストアドASP](https://nextadasp.com/itp-localstorage/)
- [ITP2.1における「SLVRbullet（シルバーバレット）」の対応について | BGテクノロジー株式会社 | OUT OF THE BOX](https://bgtech.co.jp/news/itp2-1における「slvrbullet」の対応について/)
- [a-works株式会社、アフィリエイト広告（AdCent）におけるSafariのITP2.1の影響について調査結果を公開 - FNN.jpプライムオンライン](https://www.fnn.jp/posts/000000015_000019335/201907111800_PRT_PRT)

最新情報あり次第、更新予定。

# その他

ITPはCookieの利用制限のレベルをどんどん厳しくしているだけのようなものだと思っておりましたが、アプリケーションへの影響を考慮しての代替案として Storage API のアプローチを公式に発表しておりました。

# 参考記事

[Intelligent Tracking Prevention](https://webkit.org/blog/7675/intelligent-tracking-prevention/)
[Intelligent Tracking Prevention 1.1](https://webkit.org/blog/8142/intelligent-tracking-prevention-1-1/)
[Intelligent Tracking Prevention 2.0](https://webkit.org/blog/8311/intelligent-tracking-prevention-2-0/)
[Intelligent Tracking Prevention 2.1](https://webkit.org/blog/8613/intelligent-tracking-prevention-2-1/)
[Intelligent Tracking Prevention 2.2](https://webkit.org/blog/8828/intelligent-tracking-prevention-2-2/)
[Intelligent Tracking Prevention 2.3](https://webkit.org/blog/9521/intelligent-tracking-prevention-2-3/)
[  Full Third-Party Cookie Blocking and More](https://webkit.org/blog/10218/full-third-party-cookie-blocking-and-more/)
[ITPの概要と対策について](https://www.maru.jp/itp/)
[Safariに搭載されたAppleのIntelligent Tracking Preventionはどのように動作するのか](https://www.infoq.com/jp/news/2018/07/safari-tracking-prevention/)
[ITP2.2(Intelligent Tracking Prevention)とその影響について](https://medium.com/axelmark/itp2-2-intelligent-tracking-prevention-とその影響について-d7cdd0957dda)
[AppleのITP2.1のリリースと対策を分かりやすく解説](https://yukimonkey.com/fix-error/itp2_1/)
[safariのITP2.2とは？広告やアクセス解析への影響について解説 | AdLiticsラボ](https://adliticslabo.com/inteligent-tracking-prevention-2-2/1337/)