💬

ITP202003のローカルストレージ/cookie規制

2022/11/23に公開

はじめに

最近チームでITPのローカルストレージ/cookieへの規制が話題に上がったので、自分の備忘録にまとめておきます。

ITPとは

ITP(Intelligent Tracking Prevention)とは、AppleによりSafariに搭載されているトラッキング防止機能のことです。
各種サイトではCookieによりユーザーの情報が保存され、ユーザーに応じた広告表示やその他分析などに使用されています。
このCookieに制限をかけることで、ユーザー情報が無用に取得されないようにし、ユーザーのプライバシー保護するのがITPの目的です。

ITP202003

ITPは今までにも何回かアップデートが行われてきました。
本記事を執筆時点での最新verはITP202003となり、以下の規制内容となっています。

デバイス ブラウザ Cookie有効期限 ローカルストレージ有効期限
iOS・iPadOS 13.4 Safari 13.1 24時間※ファーストパーティー
即時※サードパーティー
7日

ファースト/サードパーティーCookieとは

Cookieの発行元ドメインによってファースト/サードパーティーのどちらかに分類されます。

ファーストパーティー:ユーザーが訪問したページと同じドメインから発行されるCookie。jsで生成した際もこちらに含まれます。
サードパーティー:ファーストパーティーと反対に、ユーザーが訪問したページとは異なるドメインから発行されるCookie。例えば、サイトに表示された外部の広告バナーから発行されるCookieはこちらになります。

ITPの影響

まずサードパーティーCookieは完全にブロックされるため、ほぼ使用できない状態です。
該当する広告を使用している場合は、ユーザーの情報を上手く取得できないため、ほとんど意味をなさない状態になると考えられます。

ファーストパーティーCookieの場合も24時間、ローカルストレージは7日の制限があることで、その期間内での再訪がなかった場合に前回情報はリセット&別ユーザーとしてデータが新たに保存されることになり、期待されるデータの取得は難しくなります。
例えばユーザーの訪問回数を取得したくても一定期間を過ぎるとデータが消えるため、実際の訪問回数よりデータ上の回数が少ない、ということが起こるわけです。
そのため制限期間以上にデータを保持したい場合は他の方法を検討する必要があります。

現時点での対応策

自分で調べた範囲では、まだ明確な代替案は見当たらないようでした。

サーバー側でCookie生成&HttpOnly・Secure属性を付与すると、itpの制限を受けないという対応方法もあるようですが、その場合JavaScriptでCookieの読み書きが不可能になるので、実装への影響は出てしまうことになります。
引き続き規制の動向はキャッチアップしつつ、例えば7日以上ログイン期間が空かないようユーザーにログインを促すなど、案件ごとに実装方針を考えていくことになりそうです。

参考

Discussion