セキュリティ

URLクエリのトークンを含むHTMLを共有するときのリスクと対策

認証トークンやAPIキーをURLクエリに含んだまま共有するHTMLは、意図しない情報流出の入口になります。どんな経路でトークンが漏れ、どのような被害が起きるかを整理した上で、共有前に取るべき具体的な対策を説明します。

なぜ危ないのか

URLのクエリ文字列はブラウザのアドレスバーに表示されるため、画面共有・スクリーンショット・物理的な覗き見によって漏えいします。さらにHTTPリファラヘッダーに含まれるため、HTML内に外部リソース(画像・フォント・アナリティクスタグ)が1つでもあれば、そのサーバーのアクセスログにトークンが記録されます。

JWTのような署名付きトークンは有効期限内であれば第三者がそのまま使えます。APIキーであれば課金やデータ操作に悪用されます。プレビューURLを送付した相手が善意であっても、その相手の端末からさらにURLが転送されるリスクを制御できません。

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

ソースで見る場所

共有前にHTMLをブラウザで開き、アドレスバーのURLを確認します。`?`以降にtoken・key・auth・session・idといった文字列が含まれていたら要注意です。次にDevToolsのNetworkタブでページ読み込み時のリクエストを全件確認し、クエリパラメータにトークンが付いたリクエストが外部ドメインに飛んでいないか見ます。

ソースコード内では`window.location.search`や`new URL(window.location.href).searchParams`を使ってクエリを取得している箇所を探します。取得した値を`fetch`のURLに直接文字列連結している実装は、外部へのトークン送信経路として特に危険です。

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

安全に共有する設定

トークンをURLクエリから除去し、代わりにギガサイト便のパスワード認証だけでアクセス制御する構成に変更します。レビュアーにとって必要なのはコンテンツの確認であり、実際の認証トークンは不要なはずです。レビュー専用のダミーデータで動作する版を別途用意するのが理想です。

どうしてもトークンが必要な場合は短命トークン(有効期限を数時間に設定)を発行し、レビュー後すぐに失効させます。ギガサイト便の有効期限とトークンの有効期限を同期させることで、期限切れ後は二重にアクセスできない状態を作れます。

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

再発防止ルール

社内のHTMLレビューガイドラインに「URLクエリに機密情報を含めない」を明記し、AIでHTML生成する際のプロンプトテンプレートにも同じ制約を入れます。プロンプトテンプレートを共有ドキュメントで管理することで、チーム全体の生成品質を揃えられます。

月に一度、過去に共有したプレビューURLをギガサイト便の管理画面で棚卸しし、不要になったURLを失効させる運用を設けます。長期間有効なURLが残存していると、忘れた頃に第三者がアクセスする「寝ているリスク」が蓄積します。

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

よくある質問

共有してしまったURLのトークンをすぐに無効化するにはどうすればよいですか?

トークンを発行したサービスの管理画面で即時失効させてください。ギガサイト便のURLも同時に失効させると、コンテンツ自体へのアクセスも遮断できます。被害確認のためにサービスのアクセスログも確認することをお勧めします。

リファラヘッダーでトークンが漏えいするのを防ぐ方法はありますか?

HTMLのheadに`<meta name="referrer" content="no-referrer">`を追加すると、外部リソース取得時のリファラ送信を抑制できます。ただし根本的にはクエリにトークンを含めない設計に変更するのが最善です。

アナリティクスタグ(GTMなど)がHTMLに入っていてもトークンは漏えいしますか?

GTMやGA4はページのURLをリファラとして送信するため、URLにトークンが含まれていれば収集されます。Googleのサーバーに送信されたデータは設定によって保持されるため、本番トークンはクエリに含めないことが前提条件です。

関連記事

セキュリティ

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

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

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

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

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

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

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

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

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