起動時の検証

フォームのすべての起動をサーバーでチェックする

  1. 存在する理由
  2. 3 つの経路
  3. このセクションの内容

管理者とフォーム作成者向け: 誰が送信したかにかかわらず、すべての起動について、そのルールと extravars をサーバーにチェックさせます。

このチェックは、誰が、または何がフォームを起動したかにかかわらず適用されます。ブラウザー、REST API を呼び出すスクリプト、 MCP サーバーを通じた AI エージェントのいずれでもです。


存在する理由

フォームのルール ( required、 regex、 minValue、 sameAs など) は、これまでずっと ブラウザーでチェックされてきました。その後、ブラウザーは POST /api/v2/job に 2 つのものを送信します。

  • rawFormData: ユーザーが入力したとおりのフィールドの値
  • extravars: playbook が受け取るもの。ブラウザーでそれらの値から作成されます

起動時の検証がない場合、サーバーはこの両方を信頼します。有効なトークンを持っていれば誰でもその エンドポイントを直接呼び出し、regex、必須フィールド、リストのルールを一切適用されずに、任意の extravars を 送信できます。ブラウザーでしか使われないフォームであれば、それでも許容できるかもしれません。しかし、 ほかのシステムが REST で起動するフォームでは、フォームのルールがまったく適用されないことになります。

また、サーバーには、ブラウザーからのリクエストとスクリプトから送信されたリクエストを区別する方法がありません。 どちらも同じエンドポイント、同じトークン、同じ本文を使い、ユーザーは自分のブラウザーが送信するリクエストを 何でも変更できます。信頼できるチェックはサーバー上のものだけであり、起動時の検証がそのチェックです。


3 つの経路

起動がどのように検証されるかは、起動がどの経路で届くかと、起動時の検証のモードによって決まります。

起動元 検証 ジョブが使う extravars
MCP サーバー (AI エージェント) 常にサーバーで検証 常にサーバーが作成
ブラウザー または REST API、起動時の検証 off ブラウザーでのみ検証 ブラウザー (または呼び出し元) が送信したもの
ブラウザー または REST API、起動時の検証 log サーバーで検証、拒否はログに記録するだけ 送信されたもの。差異はログに記録
ブラウザー または REST API、起動時の検証 enforce サーバーで検証、無効な場合は拒否 サーバーが作成

ブラウザー、MCP サーバー、起動時の検証は、ルールに同じコード (共有のフォームエンジン) を使います。 同じルールを同じ順序で、同じメッセージとともに適用します。ブラウザーが表示するエラーは、サーバーでも同じテキストで拒否されます。


このセクションの内容

各トピックはそれぞれのページで説明しています。

ページ 内容
有効にする インスタンス全体、または 1 つのフォームに対して
log と enforce ルールに反する起動を各モードがどう扱うか
リストの行 list フィールドの行がどのように検証されるか
ファイルのアップロード file フィールドがどのように検証されるか
パスワード password フィールドがどのように検証され、API から除外されるか
再起動 再起動したジョブがどのように検証されるか
展開する インスタンスを enforce に移行する方法と、既知の制限