なぜ危ないのか
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も合わせてソースを確認してください。