セキュリティ

http混在を防ぐAIプロンプトと公開前スキャン

AIにHTMLを書かせるたびにhttp混在が混入しないか不安になる——その問題はプロンプトの書き方と生成後の自動スキャンで9割解消できます。この記事では、AIがhttp://URLを生成しにくくなる制約プロンプトの書き方と、生成物を30秒でスキャンするコマンドの両方を手順付きで解説します。

なぜ危ないのか

AIのトレーニングデータにはHTTPS普及前の古いコードが大量に含まれています。そのためCDN参照や外部APIのURLを生成するとき、モデルが学習した頻度の高いhttp://フォーマットをそのまま出力する場合があります。生成物をそのままデプロイすると、本番環境で初めて問題に気づくという典型的な失敗パターンに陥ります。

AIが生成するサンプルHTMLはデモ目的のため、画像URLにhttpで始まるプレースホルダー画像サービス(例: `http://placehold.it/300x200`)を使うことがあります。デモ確認には問題ないですが、そのまま社外に共有するとMixed Contentとして検出されます。生成物はそのままの状態では「完成品」ではなく「素材」として扱うのが適切です。

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

ソースで見る場所

まず`<link rel="stylesheet" href="http://`と`<script src="http://`の2パターンを重点的に検索します。CSSとJavaScriptのhttp混在はブラウザが能動的にブロックするため、ページの見た目や機能が壊れる直接的な原因になります。imgやvideoのhttp混在は警告だけで表示されることもありますが、いずれも修正対象です。

JavaScriptコード内のAJAXリクエスト先URLも確認が必要です。`fetch('http://api.example.com')`や`axios.get('http://...')`のような記述がHTMLに埋め込まれたscriptブロックにあると、ページ表示後の非同期通信がMixed Contentとして拒否されます。`grep -n 'http://' *.html | grep -v '<!--'` でコメントアウト行を除外しながら検索してください。

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

安全に共有する設定

スキャンで問題がなくなったHTMLをアップロードするサービス自身がHTTPSで配信していることを確認します。HTTPSに対応したホスティングサービスを使っていても、カスタムドメインの設定を誤るとHTTPでの配信になる場合があります。ブラウザのアドレスバーで鍵マークが表示されているか本番URL・プレビューURLの両方で確認してください。

レビュー用の共有URLは閲覧ログが取れるサービスを選択してください。誰がいつURLにアクセスしたかを記録することで、意図しない第三者のアクセスを事後検知できます。ギガサイト便のような認証付き共有サービスはこうした閲覧ログ機能も提供しており、万一の際の影響範囲の特定に役立ちます。

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

再発防止ルール

プロンプトに追加すべき具体的な制約文の例:「外部リソースはすべてhttps://で記述してください。http://のURLは一切使わないでください。プレースホルダー画像が必要な場合はhttps://placehold.co/を使用してください。」この3文を定型句としてスニペットツール(AlfredやClipyなど)に登録し、毎回ペーストする運用が最も続きます。

チームのGit管理HTMLリポジトリに`.github/workflows/mixed-content-check.yml`を作成し、pushのたびに `grep -rn 'http://' --include='*.html' .` を実行するGitHub Actionsワークフローを設定します。問題検出時にはPRにコメントを自動投稿する設定にすると、レビュアーが気づかないケースを防げます。

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

よくある質問

プロンプトに制約を追加してもAIがhttp://を出力することはありますか?

制約があっても例外的に出力されることがあります。プロンプトによる予防は第一防御層として機能しますが、生成後のスキャンを省略することはできません。両方を組み合わせることで信頼性が確保できます。

スキャンにLighthouseを使うメリットは何ですか?

LighthouseはMixed Contentだけでなくパフォーマンス・アクセシビリティ・SEOも同時にレポートします。公開前に一括で品質確認したい場合はLighthouse、Mixed Contentだけを素早く確認したい場合はgrepと使い分けるのが効率的です。

社内向けにHTTPサーバーでHTMLを公開する場合はプロンプトの制約は不要ですか?

社内HTTPサーバーでのみ使うなら当座の問題は出ませんが、後でHTTPS環境に移行する可能性があるなら最初からhttps://で統一しておくことを推奨します。移行時の修正コストをゼロにできます。

関連記事

セキュリティ

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

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

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

AI生成HTMLにhttp混在が残っていないか確認する方法

AIが生成したHTMLにhttp://のリソースが混在していないか確認したい方向け。ブラウザコンソールでの警告の読み方、grepによる一括検索、修正後の動作確認まで、公開前に完結できる手順を具体的に示します。

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

社外レビュー前にhttp混在を検出するチェックリスト

社外レビュー用にHTMLを共有する前にhttp混在を確実に検出したい担当者向け。目視チェックだけでなくブラウザの開発者ツールやコマンドラインを活用した確認手順と、再発を防ぐ運用ルールをセットで解説します。

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

クリックジャッキングを防ぐAIプロンプトと公開前スキャン

AIプロンプトの書き方を工夫してクリックジャッキングの原因となるコードをそもそも生成させたくない方向け。プロンプト制約の具体文例と、生成済みHTMLを素早くスキャンするコマンドを組み合わせた二段構えの防止策を解説します。

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

XSSを防ぐAIプロンプトと公開前スキャン

AI生成HTMLのXSSリスクをプロンプト設計とスキャンツールの両面から抑えたい開発者向け。指示文の書き方の具体例と、VSCodeやgrepを使ったスキャン手順を説明し、リリース判断の基準を示す。

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

オープンリダイレクトを防ぐAIプロンプトと公開前スキャン

AI生成HTMLのオープンリダイレクトをプロンプト設計とスキャンツールの両面から防ぎたい開発者向け。プロンプトの制約文の書き方、grep・Semgrepを使った検出手順、修正パターンのサンプルを具体的に解説する。

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