セキュリティ

AI生成HTMLにAPIキー直書きが残っていないか確認する方法

AIが生成したHTMLには、開発時のAPIキーや認証トークンがソースコードに直書きされたまま残ることがあります。ブラウザで「ソースを表示」すれば誰でも読める状態でキーが埋め込まれているケースは珍しくなく、公開前の確認を怠ると第三者にAPIを不正利用されるリスクがあります。

なぜ危ないのか

HTMLファイルはJavaScriptを含めてブラウザが解釈するテキストファイルです。`<script>`ブロックや外部JSファイルに`const apiKey = 'sk-xxxxxxxxxxxx'`と書かれていれば、ページにアクセスしたすべてのユーザーがキーを取得できます。Googleがページをクロールすれば検索インデックスに載る可能性もあり、キーが流出する経路は公開と同時に生まれます。

APIキーの不正利用は経済的な損害と直結します。OpenAIのAPIキーが漏れた場合、他人がそのキーで大量のリクエストを送って請求が跳ね上がるリスクがあります。Google Maps APIキーは不正利用されると超過料金が発生します。どちらも「キーを無効化すれば止まる」とはいえ、気づくまでの間の損害は取り返せないため、予防が最も重要です。

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

ソースで見る場所

ブラウザで「ページのソースを表示」(Ctrl+U / ⌘+U)を開き、Ctrl+FでAPIキーらしい文字列パターンを検索してください。確認すべきキーワードは`api_key`・`apiKey`・`token`・`secret`・`Bearer`・`sk-`(OpenAI)・`AIzaSy`(Google)などです。どれかにヒットした場合は前後の文字列を確認し、テスト用ダミー値か実際のキーかを判断します。

外部JSファイルの読み込みがある場合はそのファイルも確認が必要です。ブラウザの開発者ツール(F12)→「Sources」タブ→`<script src="...">`で指定されたJSファイルを開き、同様のキーワード検索を行います。AIが複数ファイルを生成した場合はすべてのファイルに対して検索してください。

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

安全に共有する設定

APIキーをHTMLに含めること自体が設計上の誤りです。正しくはサーバーサイドでAPIを呼び出してフロントエンドにはレスポンスのみ返す構成にします。Cloudflare WorkersやVercelのサーバーレス関数をプロキシとして使い、APIキーは環境変数(`env.OPENAI_API_KEY`)として保持して絶対にHTMLに書かないことが原則です。

一時的なレビュー目的でどうしてもフロントエンドからAPIを呼ぶ必要がある場合は、APIプロバイダーのダッシュボードでキーの使用制限を設定してください。OpenAIならUsage Limitsで月額上限を設定でき、Google Maps APIなら参照元ドメインを制限できます。加えて共有後にキーを失効させてすぐ新しいキーに差し替える運用を徹底してください。

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

再発防止ルール

AIにHTMLを生成させるプロンプトに「APIキー・認証トークン・パスワードをソースに含めないでください。環境変数やサーバーサイドで処理してください」と明記することで、多くのケースでキーの直書きを防げます。生成結果のレビュー時には必ず上記のキーワード検索を行うことをチェックリストに加えてください。

GitHubに保存する予定のHTMLファイルでは、`.gitignore`に`*.env`を追加するだけでなく、`git-secrets`や`truffleHog`のような秘密情報スキャンツールをコミット前フックに設定することを検討してください。コミットの瞬間にキーが検出されれば、公開前にブロックできます。

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

よくある質問

テスト用のダミーAPIキーと実際のキーを見分けるにはどうすればよいですか?

実際のAPIキーはAPIプロバイダーのダッシュボードで発行されたキーと文字列を照合してください。`sk-test-`や`pk-test_`のように「test」が含まれる場合はテスト用です。確認が難しい場合はそのキーをダッシュボードで検索し、存在すれば本物と判断できます。

minifyされたJSにAPIキーが埋め込まれている場合も見つけられますか?

はい。ブラウザ開発者ツールのSourcesタブで対象JSを開き、左下の`{}`ボタン(Pretty-print)を押すと整形表示されます。その状態でCtrl+Fキーワード検索をすれば埋め込まれたキーを見つけられます。

既に公開してしまったHTMLにAPIキーが含まれていた場合、最初にすべきことは何ですか?

まずそのAPIキーをプロバイダーのダッシュボードで即座に失効・削除してください。新しいキーに差し替えた後で、公開中のHTMLからキーを除去したバージョンを再アップロードします。失効前の利用履歴をログで確認し、不審な使用がないか確かめてください。

関連記事

セキュリティ

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

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

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

AI生成HTMLにSupabase anon keyが残っていないか確認する方法

AI生成HTMLにSupabaseのanon keyが残っていないか不安なエンジニアや担当者向け。キーの見つけ方・危険度の評価方法・除去後の確認手順を知ることができ、公開可否を自分で判断できるようになる。

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

AI生成HTMLにStripeキーが残っていないか確認する方法

AI生成HTMLにStripeのキーが含まれていないか確認したいエンジニア・担当者向け。キーの種類ごとのリスク差と、ファイル内で見つけるための具体的な検索手順・対処法を理解できる。

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