セキュリティ

Google Analytics IDの残りを含むHTMLを共有するときのリスクと対策

Google Analytics測定IDの残存は、データ汚染という形で静かに被害を広げます。発覚が遅れるほど汚染されたデータに基づいた意思決定が積み重なるため、共有前の除去と事後対応の両方を知っておくことが重要です。

なぜ危ないのか

社外共有HTMLにGA測定IDが含まれると、クライアントや競合他社の社員がアクセスしただけで自社の計測プロパティにセッションデータが蓄積されます。キャンペーン期間中であればコンバージョン率の計算が狂い、広告予算配分の判断を誤る原因になります。

クライアントへの提案書HTMLにクライアントのGA IDが誤って別クライアントのIDに置き換わっていた場合、提案先の競合情報を収集するかたちになります。こうした事故は技術的には軽微でも、契約上の守秘義務違反として法的問題に発展するリスクがあります。

  • 相手がログインなしで開ける状態か確認する
  • PCとスマホで最低1回ずつ表示を確認する
  • 内部情報・個人情報・不要な外部送信が残っていないか見る
  • レビュー期限と修正時の差し替え方を決めておく

ソースで見る場所

`gtag('config', '`の後に続く引数を確認します。本番IDは`G-`で始まり10桁の英数字が続きます。ダミー値との見分け方は、実際のGA4コンソールでそのIDのプロパティが存在するかどうかです。不明な場合は`G-XXXXXXXXXX`に置き換えておけば安全です。

Google Tag Managerを経由している場合は、`GTM-XXXXXXX`形式のID検索も実施します。GTMコンテナの中に複数のタグが含まれることがあるため、GTM IDが見つかったらコンテナの管理画面でどのタグが有効かを確認する必要があります。

  • HTML内の外部script・form action・iframeを確認する
  • APIキーやトークンらしき文字列がないか検索する
  • 画像・CSS・JSのパスが公開後も解決できるか見る
  • noindexと認証を混同せず、必要なら両方設定する

安全に共有する設定

レビュー用ビルド専用のnpmスクリプトを用意し、`build:review`実行時にHTMLからGA関連タグをsedやpostprocessスクリプトで自動削除します。ビルドコマンドを変えるだけでタグの有無を切り替えられるため、手動削除のミスがなくなります。

共有ツールとしてギガサイト便を使い、URLに会社ドメイン認証を設定します。認証をクリアした相手だけがアクセスできるため、GAタグが残っていても計測されるユーザーをコントロールできます。特定ドメインの人だけを対象にすることで、GA上のセグメント除外も設定しやすくなります。

  • HTML内の外部script・form action・iframeを確認する
  • APIキーやトークンらしき文字列がないか検索する
  • 画像・CSS・JSのパスが公開後も解決できるか見る
  • noindexと認証を混同せず、必要なら両方設定する

再発防止ルール

プロジェクトの`README.md`に「レビュー用共有前に`npm run check:tracking`を実行すること」と明記します。このコマンドが`package.json`のscriptsに登録されており、実行するとgrepスキャンが走り結果が表示されるようにしておきます。

四半期に一度、過去の共有済みURLを棚卸しし、有効期限切れのURLが本当に無効になっているかを確認します。ギガサイト便のダッシュボードでアクティブなURLを一覧表示して確認する手順をチームのカレンダーに登録しておきます。

  • HTML内の外部script・form action・iframeを確認する
  • APIキーやトークンらしき文字列がないか検索する
  • 画像・CSS・JSのパスが公開後も解決できるか見る
  • noindexと認証を混同せず、必要なら両方設定する

よくある質問

GA4の「データ削除リクエスト」は具体的にどの画面から申請しますか?

GA4のAdminメニュー→「Data collection and modification」→「Data deletion requests」から申請できます。日付範囲・フィルタ条件を指定して削除対象を絞り込み、確認後に申請します。削除完了まで最大63日かかります。

GAデータの汚染を発見したとき、クライアントにどう報告すべきですか?

事実を正確に伝えることが信頼回復の第一歩です。「いつ・どのHTMLに・どのIDが含まれていたか」「影響を受けた可能性のあるアクセス数」「データ削除の申請状況」の三点を書面で報告し、再発防止策も併せて提示してください。

測定ID混入を検出する自動テストをJestで書けますか?

はい。`fs.readFileSync`でHTMLを読み込み、`/G-[A-Z0-9]{10}/.test(html)`がfalseであることをassertするテストが書けます。ダミーID(`G-XXXXXXXXXX`)は許容する場合は、正規表現から`X`のみで構成されるパターンを除外する条件を追加してください。

関連記事

セキュリティ

http混在を含むHTMLを共有するときのリスクと対策

http混在を含むHTMLを共有した場合のリスクを把握し、適切な対処法を選びたい方向け。ブラウザによる表示ブロックや通信傍受のリスクを具体的に示しながら、修正・代替策・共有設定の3つの観点から対策を解説します。

5分で読める
セキュリティ

XSSを含むHTMLを共有するときのリスクと対策

XSSが含まれる可能性のあるHTMLを共有するリスクを把握し、適切な対策を講じたい担当者向け。被害シナリオ、コードレベルの修正方法、CSPによる軽減策、再発防止の仕組みづくりを段階的に解説します。

5分で読める
セキュリティ

オープンリダイレクトを含むHTMLを共有するときのリスクと対策

オープンリダイレクトを含むHTMLを外部共有するリスクを理解し、修正判断と対策を迷わず行いたいチームリーダー・開発者向け。フィッシング被害の具体的なシナリオと、許可リスト実装・URL認証による二段階対策を解説する。

6分で読める
「セキュリティ」の記事をもっと見る →