mcpField
G
gpc-cookie-integration

gpc-cookie-integration

github.com/mukul975セキュリティ32338 回インストール32 週間前に更新
リポジトリ

gpc-cookie-integration について

Global Privacy Control と Cookie 同意管理を連携するための、Web 開発者やプライバシーチーム向けガイドです。シグナル検出、CMP の設定、法的要件、実装例、検証方法を扱います。

主な機能

  1. 01HTTP と JavaScript の GPC 検出
  2. 02GPC と CMP 同意カテゴリの対応付け
  3. 03管轄地域ごとのオプトアウト処理
  4. 04広告 Cookie とタグの遮断確認
  5. 05同意の競合の記録と解決

活用シーン

  1. 01Web サイトへの GPC 検出追加
  2. 02OneTrust または Cookiebot の設定
  3. 03広告トラッキング遮断のテスト

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/mukul975/privacy-data-protection-skills --skill gpc-cookie-integration

インストール後、Claude Code で/gpc-cookie-integrationを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

assets/
template.md
references/
standards.md
workflows.md
scripts/
process.py

詳細

Cookie Consent との Global Privacy Control の統合

概要

Global Privacy Control(GPC)は、ユーザーのプライバシー設定をウェブサイトに伝えるブラウザーレベルのシグナルです。GPC コミュニティグループによって仕様が定められ、カリフォルニア州の CCPA/CPRA(2023 年 1 月 1 日施行)、コロラド州の CPA(2024 年 7 月 1 日施行)、コネチカット州の CTDPA(2023 年 7 月 1 日施行)、その他の米国州法の下で法的拘束力のあるオプトアウト手段として認められています。GPC は各リクエストとともに、Sec-GPC: 1 HTTP ヘッダーおよび navigator.globalPrivacyControl JavaScript プロパティを送信します。ウェブサイトはこのシグナルを検出し、ユーザーに追加の操作を求めることなく、販売、共有、ターゲティング広告のオプトアウトを自動的に実行する必要があります。GPC シグナルによって広告用 Cookie とデータ共有が確実に抑制されるようにするには、Cookie 同意管理プラットフォーム(CMP)との統合が不可欠です。

GPC シグナルの仕様

GPC の仕組み

HTTP ヘッダー:

Sec-GPC: 1

ユーザーがブラウザーまたはブラウザー拡張機能で GPC を有効にしている場合、すべての HTTP リクエストに含まれます。

JavaScript API:

navigator.globalPrivacyControl  // Returns true if GPC is enabled

GPC 対応ブラウザーと拡張機能:

ブラウザー/拡張機能GPC のサポート有効化方法
Firefox組み込み(v120 以降)設定 > プライバシーとセキュリティ > 「ウェブサイトに自分のデータの販売または共有をしないよう伝える」
Brave組み込み(デフォルトでオン)デフォルトで有効。設定 > シールドで無効化
DuckDuckGo Browser組み込み(デフォルトでオン)モバイルとデスクトップでデフォルトで有効
DuckDuckGo Extension拡張機能拡張機能をインストール。GPC はデフォルトで有効
Privacy Badger (EFF)拡張機能拡張機能をインストール。GPC はデフォルトで有効
OptMeowt拡張機能GPC 専用の Chrome/Firefox 拡張機能
Safariネイティブでは非対応サードパーティ製拡張機能が必要
Chromeネイティブでは非対応拡張機能(DuckDuckGo、Privacy Badger)が必要
GPC と Do Not Track(DNT)の比較
機能GPCDNT
HTTP ヘッダーSec-GPC: 1DNT: 1
JavaScript APInavigator.globalPrivacyControlnavigator.doNotTrack
法的な承認あり — CCPA/CPRA、CPA、CTDPA、その他の州法なし。法的な執行手段はありません
対象範囲販売、共有、ターゲティング広告のオプトアウト一般的なトラッキング設定
ブラウザーでの採用拡大中(Firefox、Brave、DuckDuckGo)ほとんどのブラウザーで廃止
業界の遵守状況該当する法域では法的に義務付け大部分で無視されています

米国州法との対応

州別のGPCに関する法的要件
州法律GPCの位置付け発効日要件
CaliforniaCCPA/CPRA法的拘束力のあるオプトアウトJan 1, 2023GPCを販売および共有の有効なオプトアウトとして扱う必要があります(Cal. Civ. Code §1798.135(e); 11 CCR §7025(b))
ColoradoCPA法的拘束力のあるオプトアウトJul 1, 2024GPCを含む「ユニバーサルオプトアウトメカニズム」を尊重する必要があります(C.R.S. §6-1-1313(1)(a); 4 CCR 904-3 Rule 5.11)
ConnecticutCTDPA法的拘束力のあるオプトアウトJul 1, 2023 (UOM: Jan 1, 2025)「オプトアウト設定シグナル」を尊重する必要があります(P.A. 22-15, §6(a)(6))
MontanaMCDPA法的拘束力のあるオプトアウトOct 1, 2024ユニバーサルオプトアウトメカニズムを尊重する必要があります
TexasTDPSA法的拘束力のあるオプトアウトJul 1, 2024 (UOM: Jan 1, 2025)ユニバーサルオプトアウトメカニズムを尊重する必要があります
OregonOCPA法的拘束力のあるオプトアウトJul 1, 2024 (UOM: Jan 1, 2026)ユニバーサルオプトアウトメカニズムを尊重する必要があります
DelawareDPDPA法的拘束力のあるオプトアウトJan 1, 2025 (UOM: Jan 1, 2026)ユニバーサルオプトアウトメカニズムを尊重する必要があります
New HampshireNHPA法的拘束力のあるオプトアウトJan 1, 2025ユニバーサルオプトアウトメカニズムを尊重する必要があります
New JerseyNJDPA法的拘束力のあるオプトアウトJan 15, 2025 (UOM: Jul 15, 2025)ユニバーサルオプトアウトメカニズムを尊重する必要があります
VirginiaVCDPA任意(UOMの義務なし)Jan 1, 2023UOMの明示的な要件はありませんが、ターゲティング広告のオプトアウトが必要です
UtahUCPA任意(UOMの義務なし)Dec 31, 2023UOMの要件はありません
GPCによって発生する処理

該当する管轄区域のユーザーについてGPCが検出された場合:

処理アクティビティGPCの影響必要な対応
個人情報の販売オプトアウトが適用されますこのユーザーのPIの販売を停止します
コンテキスト横断型行動ターゲティング広告のための共有オプトアウトが適用されます広告パートナーとのPIの共有を停止します
ターゲティング広告オプトアウトが適用されます(CPA、CTDPA、TDPSA)行動ターゲティングを無効にします
自動意思決定のためのプロファイリングオプトアウトが適用されます(一部の州)プロファイリングを無効にします
分析(ファーストパーティ)適用されませんGPCによってファーストパーティ分析がオプトアウトされることはありません
必須 Cookie適用されません厳密に必要な Cookie には影響しません

CMPとの統合

検出と応答のフロー
Page Load
    │
    ├── Check for GPC signal
    │   ├── navigator.globalPrivacyControl === true
    │   │   OR
    │   └── Server detects Sec-GPC: 1 header
    │
    ├── Determine user jurisdiction
    │   ├── IP geolocation → US state mapping
    │   └── Check if state has GPC legal requirement
    │
    ├── If GPC detected AND applicable jurisdiction:
    │   ├── Automatically set consent state:
    │   │   ├── ad_storage: denied
    │   │   ├── ad_user_data: denied
    │   │   ├── ad_personalization: denied
    │   │   ├── analytics_storage: [per CMP default — GPC does not cover]
    │   │   └── sale_of_data: opted_out
    │   │
    │   ├── Block advertising cookies and tags
    │   ├── Do NOT fire: Meta Pixel, Google Ads remarketing, third-party ad tags
    │   ├── DO fire: GA4 (if analytics consent separate from GPC)
    │   │
    │   ├── Display modified banner (optional):
    │   │   "We detected your Global Privacy Control preference.
    │   │    We will not sell or share your personal information.
    │   │    [Manage Other Preferences]"
    │   │
    │   └── Record GPC opt-out in consent log
    │
    └── If GPC detected but NON-applicable jurisdiction (e.g., EU):
        └── Treat as privacy signal but apply jurisdiction's own rules
            (EU still requires opt-in consent regardless of GPC)
Pinnacle E-Commerce Ltd向けの実装

サーバーサイドのGPC検出(Node.jsミドルウェア):

function detectGPC(req, res, next) {
  const gpcHeader = req.headers['sec-gpc'];
  const gpcEnabled = gpcHeader === '1';

  req.gpcSignal = gpcEnabled;

  if (gpcEnabled) {
    // Determine jurisdiction from IP
    const userState = geolocateToState(req.ip);

    // States where GPC is legally binding
    const gpcMandatoryStates = ['CA', 'CO', 'CT', 'MT', 'TX', 'OR', 'DE', 'NH', 'NJ'];

    req.gpcLegallyBinding = gpcMandatoryStates.includes(userState);
    req.gpcOptOut = {
      sale: gpcEnabled && req.gpcLegallyBinding,
      sharing: gpcEnabled && req.gpcLegallyBinding,
      targetedAdvertising: gpcEnabled && req.gpcLegallyBinding,
    };
  }

  next();
}

クライアントサイドのGPC検出とCMPの更新:

function handleGPCSignal() {
  const gpcEnabled = navigator.globalPrivacyControl === true;

  if (!gpcEnabled) return;

  // Get user's jurisdiction (from server or geolocation)
  const userJurisdiction = getUserJurisdiction();
  const gpcBindingStates = ['CA', 'CO', 'CT', 'MT', 'TX', 'OR', 'DE', 'NH', 'NJ'];

  if (gpcBindingStates.includes(userJurisdiction)) {
    // Update Google Consent Mode
    gtag('consent', 'update', {
      'ad_storage': 'denied',
      'ad_user_data': 'denied',
      'ad_personalization': 'denied',
      // analytics_storage not affected by GPC
    });

    // Update CMP state
    updateCMPState({
      sale_optout: true,
      sharing_optout: true,
      targeted_advertising_optout: true,
      source: 'gpc_signal',
    });

    // Remove any existing advertising cookies
    removeAdvertisingCookies();

    // Log GPC opt-out
    logConsentEvent({
      type: 'gpc_auto_optout',
      jurisdiction: userJurisdiction,
      timestamp: new Date().toISOString(),
      gpc_header_present: true,
    });
  }
}

function removeAdvertisingCookies() {
  const adCookies = ['_fbp', '_fbc', '_gcl_au', 'IDE', 'fr', 'NID'];
  adCookies.forEach(name => {
    document.cookie = `${name}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; domain=.pinnacle-ecommerce.com`;
  });
}

// Run on page load
handleGPCSignal();
CMPプラットフォームとの統合

OneTrustのGPC設定:

設定値
GPCシグナルを尊重有効
GPCの適用対象「個人データの販売」と「ターゲティング広告」のカテゴリに適用
GPCの適用地域US-CA, US-CO, US-CT, US-MT, US-TX, US-OR, US-DE, US-NH, US-NJ
GPCバナーの動作オプトアウトバナーを非表示にする(すでにオプトアウト済み)。確認通知を表示する
GPC同意記録GPCシグナルをオプトアウトのソースとして記録

CookiebotのGPC設定:

設定値
GPCを尊重有効
GPC → カテゴリのマッピングGPC = 「マーケティング」カテゴリを拒否
GPCの対象地域California, Colorado, Connecticut, Montana, Texas, Oregon, Delaware, New Hampshire, New Jersey

GPCの検証とコンプライアンス

GPC 統合のテスト
テスト期待される動作検証方法
GPC ヘッダーが送信されるブラウザーが Sec-GPC: 1 を送信するネットワークインスペクター
サーバーが GPC を検出するミドルウェアが req.gpcSignal = true を設定するサーバーログ
広告 Cookie がブロックされる_fbp、_gcl_au、IDE Cookie が設定されないCookie インスペクター
広告タグがブロックされるMeta Pixel、Google Ads のリマーケティングリクエストが発生しないネットワークインスペクター
アナリティクスに影響がないGA4 は引き続き発火する(GPC はアナリティクスを対象としません)GA4 のリアルタイムレポート
同意ログに GPC が記録されるGPC によるオプトアウトがタイムスタンプと管轄区域とともに記録されるデータベースクエリ
CCPA オプトアウトリンクに GPC が反映される「販売しないでください」ページに、GPC が検出したオプトアウトの状態が表示されるUI の確認
変更されたバナーが表示されるバナーが GPC の設定を認識する視覚的な確認
CCPA/CPRA 固有の要件

カリフォルニア州司法長官の規則(11 CCR §7025)に基づきます。

  1. サービスを低下させないこと:事業者は、GPC を金銭的インセンティブへのオプトインに対する同意として解釈してはなりません
  2. 競合の解決:ユーザーが以前に販売または共有にオプトインしていた場合、その後の訪問時に受信した GPC は、そのオプトインの撤回として扱う必要があります
  3. 再確認を求めないこと:GPC を利用するユーザーに、オプトアウトの選択を再考するよう求めてはなりません
  4. 記録の保管:GPC によるオプトアウトの記録を 24 か月間保持します
  5. プライバシーポリシーでの開示:事業者が GPC を尊重することをプライバシーポリシーに記載します

Pinnacle E-Commerce Ltd のプライバシーポリシー文言:

「お使いのブラウザーから送信される Global Privacy Control(GPC)信号を認識します。カリフォルニア州のユーザーからの GPC 信号を検出した場合、カリフォルニア州消費者プライバシー法(CCPA)およびカリフォルニア州プライバシー権利法(CPRA)に定義される個人情報の販売および共有をオプトアウトするリクエストとして扱います。このオプトアウトは、お客様に追加の操作を求めることなく自動的に適用されます。」

エッジケース

シナリオ対応
ユーザーは GPC を有効にしているが、以前に共有にオプトインしたGPC を優先し、オプトアウトとして扱う(直近の信号を適用)
ユーザーは GPC を有効にしており、適用対象外の州(例:Utah)にいるプライバシー設定として GPC を尊重しますが、法的な義務ではありません
ユーザーは GPC を有効にしており、EU にいるGPC はオプトイン同意の代わりにはなりません。EU の規則を適用します
API リクエストで GPC が検出された(ブラウザーなし)Sec-GPC ヘッダーがある場合は尊重します(プライバシーに配慮したアプリからの可能性があります)
一部のページでは GPC が有効で、別のページでは無効リクエストごとに評価します。通常、このような状態にはなりません
複数のオプトアウト信号(GPC + Cookie バナーでの拒否)最も制限の厳しい設定を適用します。どちらの場合もオプトアウトになります

主な法的・技術的参考資料

  • GPC 仕様(globalprivacycontrol.org) — GPC 信号の技術仕様
  • CCPA/CPRA Cal. Civ. Code §1798.135(e) — 事業者は GPC を有効なオプトアウトリクエストとして扱う必要があります
  • 11 CCR §7025(b)-(c)(カリフォルニア州司法長官規則) — GPC の実装要件
  • Colorado CPA Rules, 4 CCR 904-3, Rule 5.11 — GPC を含むユニバーサルオプトアウトメカニズムの要件
  • Connecticut CTDPA P.A. 22-15, §6(a)(6) — オプトアウト設定信号の要件
  • カリフォルニア州司法長官の執行措置:Sephora(2022 年 8 月) — GPC を尊重しなかったことに対する初の CCPA 執行措置。120 万ドルで和解
  • GPC に関する EDPB 声明(2023 年) — 第 21 条の異議を申し立てる権利の表明としての GPC に関する欧州の見解
  • W3C Privacy Community Group — GPC 仕様の策定
  • IAB CCPA Compliance Framework — US Privacy String と GPC の相互運用性

コメント