セキュリティ

HTMLコメント内の秘密情報を防ぐAIプロンプトと公開前スキャン

AIに依頼してHTMLを生成するとき、プロンプトの内容がコメントとして出力に紛れ込む問題をご存じですか。また、生成後にそのまま公開してしまう前に自動スキャンする仕組みがあれば、確認の手間を大幅に減らせます。プロンプト設計とスキャンの自動化を組み合わせた、HTMLコメント漏えい防止の実践手順を解説します。

なぜ危ないのか

AIはコードを生成する際に「親切」なコメントを多数挿入する傾向があります。例えばプロンプトで「お問い合わせフォームを作って」と指示すると、AIは`<!-- フォームの送信先はaction属性で変更してください -->`のような注釈をHTMLに埋め込みます。この注釈にプロジェクト名や担当者メールが含まれていると、そのまま社外に出てしまいます。

さらに、AIを対話的に使って複数回やり取りする中でプロンプトに詳細な業務仕様を含めた場合、AIがその仕様をHTMLコメントとして要約して埋め込むことがあります。業務フロー・料金体系・未公表の機能名などがコメントとして残るリスクがあるため、最終出力の確認は必須です。

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

ソースで見る場所

AIから受け取ったHTMLをそのままファイルに保存したら、まず`cat output.html | grep -n '<!--'`で全コメントを行番号付きで抽出します。行数が多い場合は`grep -c '<!--' output.html`でコメント数だけ確認し、件数が多ければ全文レビューの優先度を上げてください。

複数ファイルにまたがるプロジェクトでは、`find . -name '*.html' -exec grep -l '<!--' {} \;`でコメントを含むファイルを一覧表示し、各ファイルを順番に確認します。特にAIが生成したファイルと手書きのファイルが混在する場合は、AI生成ファイルを優先的に確認してください。

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

安全に共有する設定

プロンプトテンプレートを作成し、末尾に「重要:出力するHTMLにHTMLコメントを一切含めないこと。コード説明が必要な場合は別途テキストで提供してください」と必ず追加します。これにより、AIが生成するHTMLからほとんどのコメントを排除できます。ただしAIが指示を無視するケースもあるため、生成後の確認を省略してはいけません。

自動スキャンスクリプトとして以下のような内容を`check-html-comments.sh`として保存し、アップロード前に必ず実行します。`#!/bin/bash`の次行で`count=$(grep -c '<!--' "$1")`、`if [ "$count" -gt 0 ]`で判定し、コメントが存在する場合はファイルパスと件数を表示して終了コード1で抜けるように記述します。

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

再発防止ルール

AIを使ったHTMLの生成から公開までのワークフローを文書化し、「コメントスキャン」を公開前の必須ステップとして明記します。新しいメンバーがジョインしたときのオンボーディング資料にも含めることで、チーム全体で習慣化できます。

長期的には、コメント除去を自動化するGit pre-commitフックを整備することを検討してください。コミット前に全HTMLファイルのコメントを自動除去するか、コメントが存在する場合に警告を表示するかを選択できる設定にすると、開発者の判断に委ねながらも確認漏れを防げます。

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

よくある質問

AIへの指示でコメント禁止にしても、コード説明のない出力では修正が難しくなりませんか?

コメントの代わりに、AIに「コードの後に別ブロックとして説明文を出力してください」と指示することで、HTMLには埋め込まず説明を得られます。共有用のHTMLとは分けて管理できます。

スキャンスクリプトを実行し忘れた場合のフォールバックはありますか?

GitHub Actionsで共有用ブランチへのpushをトリガーにスキャンを自動実行する設定にしておくと、手動実行忘れをカバーできます。失敗した場合はPRのマージをブロックする設定も有効です。

条件付きコメント`<!--[if IE]>`もスキャン対象にすべきですか?

IE向けの条件付きコメントは現代の環境では無効化されており、秘密情報が含まれることはほぼありませんが、一応スキャン対象に含めて目視確認するほうが安全です。

関連記事

セキュリティ

APIキー直書きを防ぐAIプロンプトと公開前スキャン

AI生成HTMLへのAPIキー直書きをプロンプト設計で防ぎ、公開前スキャンで二重検出したい開発者・制作担当者向け。具体的なプロンプト文言とgrepコマンドをセットで紹介します。

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