セキュリティ

HTMLコメント内の秘密情報を含むHTMLを共有するときのリスクと対策

HTMLコメントに残った秘密情報は、ブラウザの「ページのソースを表示」で誰でも読めます。パスワード・APIキー・担当者名・未公表の機能説明などがコメントとして混入したHTMLを社外に共有すると、情報漏えいが発生する前に気づく手立てがありません。具体的なリスクのシナリオと、共有前に対処できる実践的な方法を解説します。

なぜ危ないのか

HTMLコメントに秘密情報が残る典型的なパターンは三つあります。一つ目はAIへのプロンプトに含めた仕様情報がそのまま出力されるケース、二つ目は開発者がTODOや本番設定の差し替えメモをコメントで残したケース、三つ目は古いバージョンのコードをコメントアウトして残しておいたケースです。どれも意図せず情報が漏れる経路になります。

共有相手が社外のデザイン会社の場合でも、担当者がソースを確認する習慣を持っていれば発見されます。さらに、共有URLがパスワードなしで誰でも閲覧できる状態であれば、検索エンジンやボットによって内容が収集される可能性もあります。コメント内の情報を「見えないから問題ない」と判断するのは誤りです。

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

ソースで見る場所

問題になりやすいのは`<head>`内のコメント(ページタイトルの変更指示、API設定の注釈)と、フォーム要素の前後にあるコメント(テスト用のメールアドレスや認証トークン)です。また、JavaScript内のコメント(`//`や`/* */`)にも同様の問題が起きるため、HTMLだけでなくインラインスクリプトの中身も確認対象に含めてください。

DevToolsのElementsパネルでは、コメントノードは薄いグレーで表示されます。ページ全体を対象に調べたい場合は、ブラウザのDevToolsよりもテキストエディタで開いてCtrl+Fで`<!--`を検索するほうが確実です。複数ページで構成されるサイトは全ページを対象にする必要があります。

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

安全に共有する設定

共有前の対処として最も安全なのは、HTMLコメントを完全に除去してからアップロードすることです。`html-minifier-terser --remove-comments`を使う方法のほか、Pythonの`html.parser`を使ったカスタムスクリプトで選択的に削除する方法もあります。重要なのは、除去後のファイルを必ずブラウザで表示確認し、デザインや機能に影響がないことを確かめることです。

ギガサイト便などのURL共有サービスを使う際は、コメント除去済みのファイルをアップロードした後、ブラウザのDevToolsでElementsパネルを開いてコメントノードが残っていないことを最終確認します。万が一コメントが残っていた場合は、ファイルを差し替えて新しいURLを発行し直してください。

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

再発防止ルール

AIへの指示として「出力したHTMLにコメントを含めるな」と毎回プロンプトに加えるのは煩雑なため、システムプロンプトやテンプレートに永続的に組み込みます。また、コメントを除去するスクリプトをプロジェクトのMakefileやjustfileに登録しておくと、`make clean-html`のような一発コマンドで実行できます。

情報漏えいが発生した際の対応手順もあらかじめ決めておきます。漏えいが疑われる場合は共有URLを即時無効化し、閲覧ログを確認して影響範囲を特定し、関係者へ速やかに報告するフローを文書化しておくと、発生時のパニックを防げます。

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

よくある質問

HTMLコメントに含まれていたAPIキーが漏えいした場合、どう対処すればよいですか?

まず該当のAPIキーを即時ローテーション(再発行)し、古いキーを無効化します。次に共有URLを無効化してアクセスログを確認し、不正利用の痕跡がないか調べてください。

コメントアウトした古いコードを残しておきたい場合、どうすればよいですか?

バージョン管理システム(Gitなど)のコミット履歴に残す方法を取ります。HTMLファイルからはコメントアウトを削除し、過去のバージョンはgit logで参照できる状態にしておくと安全です。

社外レビュアーに「ソースを見ないでください」と伝えれば問題を防げますか?

技術的な制御なしに口頭での約束のみに依存するのはリスクがあります。相手が悪意を持っていなくてもDevToolsを開く習慣がある場合は目に触れます。削除による技術的対処が必須です。

関連記事

セキュリティ

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

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

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

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

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

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

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

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

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