iOS/iPadOS 16.4、macOS Ventura/Monetary/Big Sur Safari 16.4における影響と対応について

iOS/iPadOS 16.4、macOS Ventura/Monetary/Big Sur Safari 16.4において、Rtoaster action+が受ける影響および対応事項をご案内いたします。

ITP(Intelligent Tracking Prevention)とは

  • クロスサイトでのユーザー追跡を防止するためのプライバシー保護機能です。
  • ITPのバージョンアップにより、3rd Party Cookieの完全ブロックや、document.cookieで発行されるクライアントサイドCookieの制限、LocalStorageの制限、リファラ情報の取得に対する制限など様々な対策が強化されています。

《ITPによる制限事項》

日本では2020年11月06日にリリースされたiOS/iPadOS 14.2、および、2020年11月13日にリリースされたmacOS Big SurのSafari14.0.1以降に搭載されたトラッキング防止機能による制限は以下のとおりです。

  • ページのサブリソース(スクリプトや画像など)のURLのドメインがCNAMEの場合、かつ、ページのURLのドメインと一致しない場合、サブリソースから設定されたCookieの有効期限は7日間に制限されます。 
  • 3rd Party Cookieが全てブロックされます。[Full Third-Party Cookie Blocking]
  • document.cookieで発行されるクライアントサイドCookieの有効期限は最長で7日間に制限されます。[ITP2.1]
    • トラッカー判定されたドメインからのパラメータ付きの流入の場合は24時間に制限されます [ITP2.2]
  • LocalStorageなどCookie以外のストレージが最後のインタラクションから7日後に削除されます。[Full Third-Party Cookie Blocking]
    • インタラクション(※)のないドメインのLocalStorageは1時間以内に削除されます [ITP2.3]
  • 外部サイトからの流入の場合、Javascriptから取得できるリファラー情報はドメイン名までに制限されます。[Full Third-Party Cookie Blocking]
 ※インタラクションはクリック、タップ、入力などの事でドメイン毎に判定されます。

2023年3月23日にリリースされた iOS 16.4以降の全てのブラウザ(WebView含む)、 Safari 16.4以降では上記に加えて下記制限が追加されます。

  • メインリソース(ページのHTMLファイル)とサブリソース(スクリプトや画像など)のサブネットマスクの長さを比較したとき、先頭から一致している部分の長さがIPアドレスの長さの半分(IPv4の場合は16、IPv6の場合は64)未満の場合、サブリソースから設定されたCookieの有効期限は7日間に制限されます。 [Third party IP address]

Rtoaster action+が受ける影響

iOS/iPadOS14.2、macOS Big Sur Safari 14.0.1以降のバージョンからは下記の影響がございます。

  1. 7⽇間サイトへの訪問がないユーザーは、以降の訪問からは新規ユーザーとしてトラッキングされます。
  2. ユーザーがオプトアウトを⾏った場合も、7⽇間サイトへの訪問がないとオプトアウト状態が無効化されます。
  3. スコアルールのリファラページ条件や、レコメンドルールの流入元ページの条件にパスまで指定している場合に判定が行えません。

※1、2の影響はお客様サーバー側でのご対応により回避可能となります。詳細はITPへの対応をご参照ください。
※3の影響につきましては、外部ドメインからの流入時は、ルールの評価対象がドメインのみとなる為、適宜スコアルールのリファラページ条件や、レコメンドルールの流入元ページの条件変更をご検討ください。

ITPへの対応

Rtoaster action+でITPの制限を回避するには、お客様サーバー側で以下いずれかの方法で対応を行っていただく必要がございます。

Rtoaster基本コードで常にユーザーIDをセットする方法

ユニークユーザーIDをお客様サーバーで発行されたサーバーサイドCookieや、システムから基本コードを出力するなど、クライアントサイドCookieを使わずに管理することでITPによる制限を回避します。
オプトイン・オプトアウトについてはCookieを前提としたRtoaster action+の仕組みは利用できないため、お客様側のシステムで仕組みを用意してRtoaster action+の呼び出しを制御していただく必要があります。

お客様側のシステムで発行されたCookieを用いる場合

以下いずれかに該当する場合は、本項をご参照ください。

  • お客様側のシステムでログイン前のユーザーにも一意なサーバーサイドCookieが発行されている場合(例:mod_usertrack、ngx_http_userid_moduleなど)
  • 常にログインが行われているサイトでユーザーIDのサーバーサイドCookie(URLエンコード済み)が発行されている場合
※注意:Rtoaster.Cookie.get("Cookie名"); ではHttpOnlyが付いたCookieは取得できません。
※注意:Rtoaster.Cookie.get("Cookie名"); はURLエンコードされたCookieでのみ利用可能です。
    URLエンコードされていない場合は正しく値を取得できません。

デフォルトユーザーIDがUUID形式以外の場合にログイン連携を行う場合

Cookieを用いたログイン連携

お客様側のシステムからRtoaster.init()の引数にユニークユーザーIDとしてセットする場合

基本コード
ログイン連携

Rtoaster action+が発行するクライアントサイドCookieをサーバーサイドCookieに変換する方法

当該対応につきましては非推奨です。
サポート対象外となりますので、具体的な実装方法などを含めた詳細につきましてはご案内できません。ご対応の際にはお客様ご判断にて、Cookieの仕様や挙動について事前にご確認のうえ実装・動作検証を行っていただくものとなりますので、予めご了承ください。

Rtoaster action+が管理するCookieをサーバーサイドCookieに変換して頂くことで、Cookieの有効期限が最長で7日間となるITPの制限を回避します。
Rtoasterのタグや機能については変更無く利用できる方法ですが、正しく実装されていない場合にRtoasterが正常に動作しなくなるリスクがあります。詳細は後述の《注意事項》をご参照ください。

■ 変換して頂く対象のCookie

  • ユニークユーザーID: _rt.uid
  • オプトイン・オプトアウト管理: _rt.opt (機能を利用している場合のみ)
《注意事項》
  • Cookieの値はURLエンコードした上で発行して頂く必要があります。
  • URLエンコードされておらず、「+」や「%」などの記号がCookie値に含まれている場合、正しく値を取得できません。

■ Cookieを発行するドメイン(Domain)

  • Rtoasterの契約ドメイン(Rtoaster action+管理画面のプロパティ一覧に表示されているドメイン)
《注意事項》
  • Cookieを発行するドメインの指定は必須となり、Rtoasterの契約ドメインと一致している必要があります。(たとえば、導入サイトが www.brainpad.co.jp で契約ドメインが brainpad.co.jp の場合は、サーバーサイドで発行するCookieのドメインは brainpad.co.jp)
  • 契約ドメインと異なるドメインやドメイン未指定でCookieを発行された場合は、ドメインが異なる同じ名前のCookieが複数記録され、正常にトラッキングが行えなくなる可能性があります。

■ Cookieを発行するパス(Path)

  • / の固定値を指定してください
《注意事項》
  • Cookieを発行するパスの指定は必須となり、サブドメインを含む全てのサイトで共通する値である必要があります。
  • サイトやページによって異なるパスや未指定の場合に、パスが異なる同じ名前のCookieが複数記録され、正常にトラッキングが行えなくなる可能性があります。

■ Cookieの有効期限(Expires)

  • ユニークユーザーID(_rt.uid): 2年程度の期間を推奨
  • オプトイン・オプトアウト管理(_rt.opt): 10年程度の長い期間を推奨
《注意事項》
  • Expires の代わりに Max-Age による有効期限指定も可能ですが、InternetExplorer 7以前など古い環境ではサポートされておらず、一部の環境ではセッションCookieとして発行される可能性があります。
  • セッションCookieとして発行された場合は、ブラウザを閉じるとCookieが削除されるため、訪問の度に別のユーザーとしてトラッキングされます。

■ その他の属性の注意点

《注意事項》
  • HttpOnly
    RtoasterはJavascriptからCookieを参照する仕様となるため、発行されたCookieは取得できません。
    そのため、サーバーからHttpOnlyのCookieが発行される度にRtoasterからデフォルトユーザーIDのCookieが発行され、正常にトラッキングが行えなくなる可能性があります。
  • Secure
    HTTPSのページ以外存在しない場合は指定可能ですが、HTTPのページが存在する場合は、トラッキング時にCookie値が取得できません。
    そのため、HTTPSページとHTTPページの間を遷移する度にRtoasterからデフォルトユーザーIDのCookieが発行され、正常にトラッキングが行えなくなる可能性があります。
  • SameSite
    現時点では未指定の場合のデフォルト(Lax)でRtoasterは問題なく動作します。
    逆に、None に設定するには Secure 属性も同時に指定する必要があるため、前述の問題を引き起こす可能性がありますのでご注意ください。

■ サーバーサイドCookieとして発行するタイミング

  • リクエストヘッダのCookieに _rt.uid や _rt.opt が存在する場合
《注意事項》
  • リクエストヘッダのCookieに _rt.xd(有効期限23時間)が存在しないケースやログイン連携が行われたタイミングでRtoaster側で _rt.uid や _rt.opt が上書きされます。
  • Rtoaster側でCookieが書き換えられた場合は、Cookieの有効期限が7日間に制限されてしまうため、再度サーバーサイドCookieへ変換して頂く必要があります。

■ レスポンスヘッダーの例

レスポンスヘッダーの例
CookieのExpiresはRtoaster標準の参考値です。お客様システムに合わせて変更可能です。
※注意: HttpOnlyが付いたCookieはJavascriptから取得できないため、HttpOnlyは付けないようにご注意ください。