AIからの入力を、信頼しない。

WebMCPは既存の認証や画面状態を利用できます。だからこそ、通常UIと同等以上の入力検証、権限確認、監査が必要です。

WebMCP専用の緩い処理を作らない

認証、認可、入力検証、業務処理は、通常UIと同じサーバー側の境界を通します。

要点まとめ

安全なツール設計の基本は、次の3つです。

  • AIからの入力や結果は、通常のサイトと同じ基準で検証します。
  • 読むだけの操作は低リスク、送信や削除などは高リスクとして扱います。
  • 危険な操作には必ず人間の確認を入れ、実行内容を記録します。

4つの原則

  1. 01

    最小権限

    今の画面とユーザー権限で必要なツールだけを公開します。

  2. 02

    再検証

    Schema(入力の形式)を通った入力も、コードとサーバーの両方で検証します。

  3. 03

    明示確認

    送信、購入、削除などは実行内容を人間が確認できるようにします。

  4. 04

    追跡可能性

    誰が何を実行したかを、個人情報を抑えた監査ログで確認可能にします。

操作をリスクで分類する

分類リスク主な制御
読み取りサイト内検索、公開情報の取得入力制限、返り値の最小化
下書き問い合わせ内容、予約候補の入力画面同期、人間の確認
送信問い合わせ送信、予約確定認証、CSRF、冪等性、明示確認
不可逆購入、削除、契約締結最高初期導入の対象外を推奨

代表的な脅威

プロンプトインジェクション

投稿やコメントなど利用者が作った内容(UGC)や外部データがツール結果に含まれる場合、そこにAIへの指示が紛れ込むことがあります(プロンプトインジェクション)。untrustedContentHintを正しく設定し、返す内容を限定します。

説明と副作用の不一致

「候補を確認する」という説明で実際には予約を確定するツールは危険です。名前、説明、注記(アノテーション)、実処理を一致させます。

二重実行

AIが再試行すると、問い合わせや予約が重複することがあります。同じ処理が二重に実行されないためのキー(冪等性キー)、送信状態の表示、再実行時の応答を設計します。

アノテーションだけで安全にはなりません

readOnlyHintなどはAIとブラウザへの説明です。サーバー側の権限と検証を置き換えません。

公開前チェック

  • 入力の種類、長さ、許容値、形式を再検証した
  • 現在のユーザー権限をサーバーで確認した
  • CSRF、レート制限、冪等性を検討した
  • 危険な操作に人間の確認がある
  • エラー時に安全な状態へ戻れる
  • 未対応環境の通常UIをテストした
プロ向け支援

実装前にリスクを棚卸し

対象機能を分類し、段階導入の計画を作ります。

相談する