| 国際標準 |
|
|---|---|
| 開発者 | グーグル、W3C |
| Webサイト | https://wicg.github.io/ua-client-hints/ |
クライアント ヒントは、既存のハイパーテキスト転送プロトコル(HTTP)の拡張機能で、Web サーバーがクライアント (通常はWeb ブラウザー) に構成に関する情報を要求できるようにします。クライアントは、 HTTP ヘッダー フィールドと呼ばれる HTTP プロトコルの特定の部分を使用してデータを送信することで、要求された自分自身の情報をアドバタイズするか、Web ページで実行されているJavaScriptコードに同じ情報を公開することで、この要求に応答することを選択できます。これにより、サーバーはクライアントへの応答を調整できます。たとえば、クライアントが非常に小さい画面を持っていることをアドバタイズした場合、サーバーは小さい画像を送信することを選択できます。
2013 年にGoogle のエンジニアによって提案されたクライアント ヒントは、ユーザー エージェント ヘッダーのプライバシー重視の代替手段として設計されました。これは、プライバシー サンドボックスと呼ばれる、ウェブサイトがプライバシーを侵害することなくユーザー情報にアクセスするための標準を作成するという Google の取り組みの一環として行われました。ユーザー エージェント ヘッダーは、クライアントを識別するためにクライアントからサーバーに送信される文字列です。当初は統計目的を目的としていましたが、これらのヘッダーはウェブサイト間でユーザーを追跡するためのツールとしてますます利用されるようになりました。クライアント ヒントは、同じ情報を共有するためのより制御された方法を提供することで、この問題に対処することを目指していました。プライバシーに重点を置いているにもかかわらず、クライアント ヒントの初期の設計は他のブラウザから批判を受けました。提起された主な懸念の 1 つは、プロトコルによってサードパーティ ドメインによる新しい形式の追跡が可能になる可能性があるということでした。サードパーティ ドメインとは、画像やスクリプト ファイルなどのリソースを読み込む、ウェブサイトが所有していないウェブ サーバーです。これらの懸念にもかかわらず、Chrome は 2020 年 8 月にクライアント ヒントのサポートを実装しました。2024 年 5 月までに、ウェブ ユーザーの 75% 以上がクライアント ヒントをサポートするブラウザを使用していました。
プライバシー研究者はそれ以来、クライアントヒントが主にユーザーを追跡するために使用されていたJavaScriptコードによって使用されているという懸念を表明しています。2023年にルーヴェン・カトリック大学とラドバウド大学の研究によると、インターネット上のトップ10万のウェブサイトのうち、クライアントヒントのアクセスのほとんどは、追跡や広告目的で使用されるJavaScriptコードから来ていることがわかりました。
背景
1992 年に、 HTTPプロトコルの拡張機能が導入され、クライアントからサーバーに送信されるUser-Agent HTTP ヘッダーが追加されました。このヘッダーには、クライアントの名前とそのバージョンを識別する簡単な文字列が含まれていました。このヘッダーは、統計目的とプロトコルに違反したクライアントを追跡することのみを目的としていました。それ以来、User-Agent ヘッダーはますます複雑になり、ユーザーに関する重要な一意の識別情報が含まれるようになりました。多くの場合、この情報はブラウザー フィンガープリンティングを実行するために使用され、ユーザーのためにJavaScript をロードすることなく、サイト間で受動的にユーザーを追跡できます。[1]
歴史
クライアントヒント仕様の最初の草案は、2013年にGoogleのエンジニアによって提案されました。この仕様は、2015年11月にインターネット技術タスクフォース(IETF)の草案になりました。その後、2021年に、この仕様は実験的なコメント要求(RFC)のステータスにアップグレードされました。[2]この指定は、IETFがクライアントヒント仕様をインターネット標準として受け入れたが、未解決の質問がまだ残っているか、インターネットでまだ広く採用されていないことを示しています。[3]同じ頃、WebブラウザがWeb上でHTTPクライアントヒントを処理する方法に関する仕様が、W3Cコミュニティグループレポートの草案として公開されました。[2]
2020年、Googleはブラウザによるユーザーエージェント(UA)宣言を廃止する意向を発表した。この廃止は、プライバシーサンドボックスと呼ばれる、プライバシーを侵害することなくウェブサイトがユーザー情報にアクセスできるようにするウェブへの変更をGoogleが行うより広範な取り組みの一環である。彼らは、より制御された方法で同じ情報を共有できるため、クライアントヒントをユーザーエージェントヘッダーのプライバシー保護の代替手段として挙げた。[1]しかし、最初のクライアントヒントの提案は、プライバシーの懸念から他のブラウザから反発を受けた。2019年、 Braveは最初の提案について懸念を表明し、インターネット上でユーザーを追跡するために使用できる方法を挙げた。[4] Firefoxを開発しているMozillaは当初、この提案を有害であると分類し、Safariを開発しているAppleもこの提案に対して否定的な姿勢を示した。 [ 1]こうした懸念にもかかわらず、Chromeは2020年8月にHTTPクライアントヒントのサポートを実装しました。UA文字列の廃止はCOVID-19パンデミックの影響で遅れましたが、このプロセスは2023年2月に完了しました。[1]
当初反対していたMozillaは、その立場を中立に更新し、Braveはクライアントヒントの実装をChromeと同期させました。[1] 2024年5月現在、ウェブユーザーの75%以上がクライアントヒントをサポートするブラウザを使用しています。[2]
機構
クライアントヒントプロトコルは、ユーザーエージェント(UA)(通常はブラウザ)とサーバーという2つのエンティティを定義します。これら2つのエンティティは相互に通信して、ユーザーに提供するコンテンツの種類をネゴシエートします。[5]このプロセスでは、サーバーがUAにAccept-CH HTTPヘッダーを含む応答を送信します。このヘッダーには、必要なクライアントヒントHTTPヘッダーのリストが含まれています。その後、UAは、それらのヒントをサポートしている場合、後続の各応答で要求されたクライアントヒントを返すことが期待されます。サーバーはこれらのヘッダーを使用して、UAに提供するコンテンツの種類を決定します。[2] UAが特定のクライアントヒントを理解またはサポートしない場合は、UAにその特定のクライアントヒントを無視するように指示されます。特定のクライアントヒントをキャッシュできない場合は、サーバーはVaryUAに送信する別のヘッダーで該当するクライアントヒントヘッダーを指定する必要があります。[1]これにより、キャッシュメカニズムは、応答が異なるクライアントヒント値に基づいて異なる可能性があることを理解します。[6]ブラウザを具体的に識別するクライアントヒントについては、プロトコルのユーザーがブラウザ固有の特異な動作に依存することを防ぐために、追加のランダムなブラウザ識別子がグリースとして含まれています。 [7]
JavaScript を許可する UA の場合、 navigator.userAgentDataJavaScript APIを通じて追加のオプションを利用できます。この API により、JavaScript はクライアントヒントヘッダーによって提供されるのと同じ情報を取得できます。[1] API は、提供するデータを低エントロピーデータと高エントロピーデータの 2 つのタイプに分けます。低エントロピーデータは、ブラウザーが実行されるプラットフォームやブラウザーのブランドなど、大規模なユーザーグループ全体で類似する可能性が高い情報に対応します。対照的に、高エントロピーデータは、ブラウザーの正確なバージョン番号やユーザーのデバイスのモデルなどの詳細を含め、ユーザー間で大幅に異なる場合があります。低エントロピーデータはオブジェクトパラメーターとして API に含まれていますが、ユーザーを一意に識別できる高エントロピーデータは、ブラウザーがユーザーの許可を求めgetHighEntropyValues() たり、追加のチェックを実行したりできるようにする API の関数を呼び出して、クライアントが明示的に取得する必要があります。[8]
例
コンテンツ ネゴシエーションを
開始するために、HTTP サーバーはAccept-CHHTTP 要求の応答にヘッダーを追加します。
HTTP / 1.1 200 OK
...
Accept-CH: ビューポートの幅
...
ユーザーエージェントがビューポート幅クライアントヒントをサポートしている場合、ユーザーエージェントはViewport-Width後続のすべてのリクエストにヘッダーを追加します。
GET /ギャラリー HTTP / 1.1
...
ビューポート幅: 1920
...
サーバーはヘッダーの情報を使用してViewport-Width、クライアントに提供するコンテンツの種類を決定できます。たとえば、サーバーに非常に大きな画像がある場合、画像がビューポートに収まらない場合は小さい画像を返すようにサーバーを設定できます。[9]
プライバシーに関する懸念
クライアントヒント提案が最初に公開されたとき、プライバシーに関する重大な懸念に直面しました。BraveやMozillaなどのブラウザベンダーは、提案の初期草案の特定の条項により、ウェブサイトがブラウザにクライアントヒントデータをサードパーティのドメインに提供するように指示できると指摘しました。サードパーティのドメインとは、JavaScriptコードを実行せず、画像やスクリプトファイルなどのリソースを読み込むドメインです。[4]初期草案の条項により、地理的に分散したサーバーグループのネットワーク全体にウェブサイトのコンテンツを配信してウェブサイトの速度と信頼性を向上させるコンテンツ配信ネットワーク(CDN)や、ウェブサイトやアプリケーションにデータストレージ、コンピューティングパワー、インフラストラクチャなどのサービスを提供するCloudflareやGoogle Cloudなどのクラウドサービスプロバイダーなどのサードパーティドメインが、ブラウザにクライアントヒント情報をサーバーに送信するように指示することで、ウェブ全体でユーザーを追跡できるようになります。[4] [10]さらに、クライアントヒント提案は許容度が高すぎて、 HTTPヘッダーを読み取るだけでは取得できない新しいプライバシーを侵害する情報がサーバーに漏洩することを明示的に許可しているという懸念も提起されました。[10]さらに、 NoScript拡張機能のようなユーザーのプライバシーを保護することを目的とした拡張機能も、サイトがユーザーのプライバシーを侵害する情報を漏洩するのを防ぐのが著しく困難になるという理由で、この提案に反対しました。[4]
Google ChromeやMicrosoft Edgeなどの主要なブラウザがクライアントヒントを採用して以来、プライバシー研究者は、実際の追跡への使用について懸念を表明している。[2]ルーヴェン・カトリック大学とラドバウド大学の研究者による2023年の調査では、上位10万のウェブサイトのうち、ウェブページによって読み込まれるJavaScriptファイルの60%がクライアントヒントJavaScript APIにアクセスし、そのほとんどは追跡および広告スクリプトであり、その多くはGoogleからのものであることが判明した。これらのスクリプトファイルの90%以上が、取得したデータを追跡ドメインに流出させた。[1]ボン・ライン・ジーク応用科学大学の研究者による2024年5月のその後の調査では、インターネット上のウェブサイトにおけるクライアントヒントの全体的な採用は低かったものの、追跡で知られるサードパーティのドメインのかなりの数がHTTPクライアントヒントデータにアクセスしていたことが指摘された。[2]
参照
参考文献
- ^ abcdefgh Senol, Asuman; Acar, Gunes (2023-11-26). 「ユーザーエージェント削減とクライアントヒントの影響を明らかにする: 測定研究」。電子社会におけるプライバシーに関する第22回ワークショップの議事録。ACM。pp. 91–106。doi : 10.1145/ 3603216.3624965。ISBN 979-8-4007-0235-8. 2024年6月26日時点のオリジナルよりアーカイブ。2024年6月25日閲覧。
- ^ abcdef Wiefling, Stephan; Hönscheid, Marian; Iacono, Luigi Lo (2024-05-22)、「プライバシー対策がひっくり返った?Web 上の HTTP クライアントヒントの使用の調査」、arXiv : 2405.13744 [cs]
- ^ Hoffman, Paul E.; Harris, Susan R. (2006-09-01). IETF の道 - インターネット エンジニアリング タスク フォース初心者向けガイド (レポート). インターネット エンジニアリング タスク フォース.
- ^ abcd Cimpanu、Catalin (2019年5月16日)。「今後のClient-Hintsウェブ標準に関するプライバシーの懸念」ZDNET。2023年12月1日時点のオリジナルよりアーカイブ。2024年6月2日閲覧。
- ^ Grigorik, I.; Weiss, Y. (2021年2月). HTTPクライアントヒント. IETF . doi : 10.17487/RFC8942 . RFC 8942. 2021年2月11日閲覧。
- ^ 「HTTP クライアントのヒント」。HTTP。MDN。2024年 3 月5日。2024 年 6 月 7 日時点のオリジナルよりアーカイブ。2024 年6 月 2 日閲覧。
- ^ Taylor, Mike; Weiss, Yoav, 編 (2024年4月1日). 「User-Agent Client Hints § 6.2. GREASEのようなUAブランドリスト」. WICG . 2024年6月18日時点のオリジナルよりアーカイブ。 2024年6月26日閲覧。
- ^ 「NavigatorUAData: getHighEntropyValues() メソッド - Web API」。Mozilla Developer Network。2024年 7 月 26 日。2024年 9 月 21 日閲覧。
- ^ 「ユーザー エージェント クライアント ヒントによるユーザー プライバシーと開発者エクスペリエンスの向上」。プライバシーとセキュリティ。Chrome for Developers。2024年 6 月 2 日のオリジナルからアーカイブ。2024 年6 月 2 日取得。
- ^ ab 「Brave のクライアントヒント提案に関する懸念」。Brave 。2019年 5 月 9 日。2024 年 6 月 26 日時点のオリジナルよりアーカイブ。2024年 6 月 2 日閲覧。
外部リンク
- Wikimedia が ClientHints を使用して破壊行為に対抗する方法に関するドキュメント
外部リンク
- ユーザーエージェント クライアントのヒント – コミュニティ グループ レポート草稿、2021 年 2 月 9 日
