セキュリティ

外部フォーム送信先を含むHTMLを共有するときのリスクと対策

外部フォーム送信先が残ったHTMLをそのまま関係者と共有すると、入力データが第三者サービスに流出する可能性があります。リスクの大きさは送信先のサービスと入力内容によって異なるため、状況別の対策を知っておくことが重要です。

なぜ危ないのか

AIが参照したドキュメントやサンプルコードに含まれていたWebhookエンドポイントが、生成されたHTMLのフォームaction属性にそのまま残ることがあります。このエンドポイントが第三者のアカウントに紐づいている場合、送信されたデータは制作者の知らない場所に保存されます。氏名・メールアドレス・企業情報などが含まれると個人情報漏えいのインシデントになります。

Zapier・Make・formspreeのような自動化サービスのURLが含まれている場合、送信されたデータが自動でスプレッドシートに記録されたり、別のAPIを呼び出したりするワークフローが実行されることもあります。ページを見ただけでは動作が見えないため、発覚が遅れる傾向にあります。

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

ソースで見る場所

「formspree.io」「hooks.zapier.com」「hook.us1.make.com」「submit-form.com」などのドメインをHTMLソースで検索すると、主要な自動化サービスへの送信を素早く発見できます。AIがよく参照するサンプルコードで使われるエンドポイントドメインをチームでリスト化しておくと検索効率が上がります。

JavaScriptのfetch呼び出しはaction属性より見つけにくいため、`url:`・`endpoint`・`apiUrl`などの変数名も検索します。変数に代入されたURLが別のファイルや関数で定義されている場合、定義元までたどって送信先ドメインを確認します。

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

安全に共有する設定

外部送信先を含むHTMLを共有する前に、action属性を`/api/submit`のような自社管理のパスに書き換え、実際には存在しないエンドポイントでも構わないことをレビュアーに伝えます。フォームを送信すると404が返りますが、デザインのレビューには支障ありません。

送信機能のレビューも必要な場合は、ギガサイト便のパスワード保護共有と組み合わせてアクセスを絞り、モックエンドポイントへのPOSTに切り替えます。レビュー期間を明示し、期間終了後にURLを失効させることで、意図しない再利用も防げます。

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

再発防止ルール

AIに依頼するフォーム生成タスクでは、プロンプト末尾に「formのaction属性にはhttpsで始まる外部URLを使わないこと」と追記します。この制約が守られているか、生成後すぐにaction属性を確認する2秒チェックを習慣化します。

チームで使うプロンプトライブラリにフォーム系のテンプレートを用意し、action="#"とonsubmit="event.preventDefault();"をデフォルトで含めた状態にします。テンプレートから始めればAIが余計なエンドポイントを生成するリスクを根本から抑えられます。

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

よくある質問

誤ってデータが外部サービスに送られた場合、どう確認すればよいですか?

まずaction属性のURLのサービス(formspreeなど)の管理画面にログインし、受信データを確認します。自分のアカウントでなければサービスの問い合わせ窓口に連絡し、データ削除を依頼してください。

自社ドメインのAPIエンドポイントも事前に確認が必要ですか?

はい、自社ドメインでも本番環境のエンドポイントにレビュー用テストデータが入るのを防ぐため、テスト用またはモック用のエンドポイントに向けることをお勧めします。

formタグがなくてもフォームデータが送信されることはありますか?

JavaScriptでボタンのクリックイベントにfetch/XHRを直接バインドしている場合、formタグなしでもデータが送信されます。onclickやaddEventListenerも合わせてソースを確認してください。

関連記事

セキュリティ

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

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

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

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

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

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