セキュリティ

決済リンク混入を防ぐAIプロンプトと公開前スキャン

ChatGPTやClaudeでランディングページのHTMLを生成させると、プロンプト例に含めたサンプルの決済リンクがそのまま出力されることがあります。公開前にAIプロンプトを工夫してリスクを抑え、さらにスキャンツールで残存コードを検出する二段構えのアプローチが、セキュリティ担当のいない小さなチームでも実践できる現実的な対策です。

なぜ危ないのか

AIモデルは学習データに含まれる決済フォームのサンプルコードを文脈に関わらず出力することがあります。特に「ECサイトのLP」「購入ボタンのある製品ページ」といった指示をすると、実在するStripeやPayPalのJavaScript SDKを組み込んだコードが生成される場合があります。

生成されたHTMLをそのまま社外に共有すると、決済ボタンが実際に機能する状態で第三者に渡る可能性があります。テスト環境ならまだしも本番APIキーが含まれていた場合は実際の課金が発生し、法的責任を問われるリスクもあります。

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

ソースで見る場所

生成されたHTMLファイルをVS Codeで開き、`Ctrl+F`で`stripe`・`paypal`・`paypay`・`checkout`を順番に検索します。`<script>`タグ内や`data-`属性値に埋め込まれているケースが多く、肉眼では見落としやすいため検索が確実です。

コマンドラインが使えるなら`grep -riE 'stripe|paypal|checkout\.| pay\.' index.html`を実行すると、大文字小文字を区別せずに一括検索できます。複数ファイルがあるプロジェクトでは`-r`オプションでディレクトリ全体を対象にしてください。

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

安全に共有する設定

スキャンをパスした後のHTMLは、ギガサイト便でメール認証付きの限定公開URLを発行します。URLを知っているだけではアクセスできないため、SNSなどへの誤投稿や転送によるリンク漏洩が起きても閲覧されません。

共有URLには有効期限を設定し、レビュー完了後は速やかに失効させます。万が一スキャンをすり抜けた決済コードがあっても、URLが無効になれば外部からのアクセス自体が止まります。この仕組みをチームのSOPに組み込んでおくと、人的ミスを構造的に減らせます。

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

再発防止ルール

プロンプトの冒頭に「このHTMLはUI確認専用のモックアップです。Stripe・PayPal・Square等の決済SDKや外部送信フォームは一切含めないでください」と明記します。システムプロンプトに固定しておくと、毎回の指示忘れを防げます。

CI/CDパイプラインにシェルスクリプトのgrepステップを追加し、プッシュ時に自動でキーワードスキャンを実行します。誤検知が出やすい単語は除外リストに追加しながらチューニングし、最終的にはゼロ検知を維持できるルールセットに育てていきます。

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

よくある質問

grepで検索するキーワードはどう選べばよいですか?

まず`stripe`・`paypal`・`paypay`・`square`・`checkout`・`purchase`の6語から始めてください。プロジェクトで利用している決済サービスのドメイン名を追加すると網羅性が上がります。誤検知が多い場合は`-v`オプションで除外パターンを指定して絞り込みます。

プロンプトで禁止を指示しても毎回守られないのですが?

モデルによってはシステムプロンプトより後半のユーザー指示が優先されることがあります。禁止指示はシステムプロンプトと各ターンの先頭の両方に記載し、それでも混入が続く場合は生成後のgrepスキャンを必須ステップとして運用してください。

スキャンはHTMLだけで十分ですか?外部CSSやJSファイルも確認すべきですか?

外部JSファイルに決済SDKが含まれる場合があります。HTMLと同じディレクトリにあるすべての`.js`・`.css`ファイルも`grep -r`の対象に含めてください。CDN経由で読み込むスクリプトはNetworkタブで確認するのが確実です。

関連記事

セキュリティ

不審なダウンロードリンクを防ぐAIプロンプトと公開前スキャン

AIが生成したHTMLに不審なダウンロードリンクが混入するリスクを、プロンプト設計と自動スキャンで防ぎたい担当者向け。具体的なプロンプト制約文とgrepコマンドを使ったスキャン手順、および発見した際の修正方針をまとめます。

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

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

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

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