セキュリティ

決済リンク混入を含むHTMLを共有するときのリスクと対策

決済リンクが含まれたHTMLを共有することは、誤クリックによる実決済・フィッシング詐欺への悪用・ブランド棄損など複数のリスクを同時に抱えます。共有前に取れるリスク低減策と、万一問題が発生した場合の対処を整理します。

なぜ危ないのか

本物の決済リンクが含まれたHTMLを社外関係者へ送付した場合、受信者が「デモUIの確認作業中」に誤って実際のチェックアウト画面に遷移することがあります。Stripe Checkout等は一度URLにアクセスした時点でセッションが生成されるため、入力完了前でもセッションログが残ります。

さらに悪いシナリオは、HTMLファイルが第三者に転送され、悪意ある者がリンクをフィッシング詐欺に流用するケースです。あなたの企業名・ブランドが詐欺に使われ、被害者から訴えられる可能性があります。一度ネット上に出回ったHTMLを完全に回収することは困難です。

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

ソースで見る場所

aタグのhref属性を全件抽出し、`checkout.`・`/pay/`・`/payment/`・`/buy/`を含むURLを確認します。`grep -on 'href="[^"]*checkout[^"]*"'`のように正規表現を使うと効率的です。Buttonタグにdata-url属性でリンクを持つケースもあるため、data-属性も合わせてスキャンします。

JavaScriptコード内で`window.location.href`や`window.open`に決済URLを渡している場合も見落とされがちです。`grep -n 'stripe\|payjp\|paypay\|paypal'`でJSファイルとインラインscriptをスキャンし、決済サービス名が含まれる全箇所を確認します。

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

安全に共有する設定

決済リンクを除去したHTMLをギガサイト便に上げ、「会社ドメイン認証」でアクセスを絞ります。指定ドメインのメールアドレスを持つユーザーのみが閲覧できるため、第三者への転送リスクを構造的に抑えられます。期限設定も合わせて行い、レビュー完了後は自動的にアクセス不能にします。

「決済リンクを#に差し替えた旨」をHTMLのコメント(`<!-- 決済URL: 無効化済み レビュー用 -->`)と送付メッセージの両方に記載します。二重に明示することで受信者の誤解を防ぎ、後でファイルを見直した際にも無害化の意図が分かります。

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

再発防止ルール

ECサイトやサービス紹介ページのHTMLをAIで生成する場合、プロンプトの末尾に「決済ボタンのhrefは全て`#`とし、実在するStripe/PayPay/PayPalのURLは出力しないこと」を必ず追記します。この指示をサービス別のプロンプトテンプレートとして管理することで、依頼者が意識しなくても適用されます。

送付フローの自動化として、HTMLファイルをコミットまたはアップロードする前に`grep`スクリプトで決済URLを検出する仕組みを組み込みます。GitHubであればpre-push hookで実行し、決済URLが含まれていた場合はコミットを中断してアラートを表示します。

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

よくある質問

リンクを#に変えても、JavaScriptが動的にURLを書き換える場合はどうなりますか?

JavaScriptが決済URLを動的にhrefへ設定しているケースは、JSコード内の変数・定数も合わせて確認が必要です。JSファイルでも同様にgrep検索し、URLが直書きされている行をすべて無効化してください。

決済SDKが読み込まれているだけで金銭的なリスクはありますか?

SDKの読み込みだけでは課金されません。ただし、SDKの初期化にPublishable Keyが使われており、キーから不正操作が可能かを確認する必要があります。StripeのPublishable Keyは公開可能ですが、Secret Keyは絶対に含めないようにしてください。

レビュー終了後にギガサイト便のURLを期限切れにする手順は?

ギガサイト便の管理画面から対象URLの有効期限を即時に変更するか、URLを手動で削除します。レビュー完了のタイミングでカレンダーリマインダーを設定しておくと削除忘れを防げます。

関連記事

セキュリティ

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

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

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

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

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

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

オープンリダイレクトを含むHTMLを共有するときのリスクと対策

オープンリダイレクトを含むHTMLを外部共有するリスクを理解し、修正判断と対策を迷わず行いたいチームリーダー・開発者向け。フィッシング被害の具体的なシナリオと、許可リスト実装・URL認証による二段階対策を解説する。

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