0

ユーザーがSharePointCAMLクエリを渡すことができるようにする社内APIを作成しています。私の関数の側面では、ユーザーのクエリを取得し、それにいくつかの要素を追加してから、最後のクエリを使用してSharePointから必要なデータを取得します。

例:

ユーザーが渡す:

<Query>
   <Where>
      <Eq>
         <FieldRef Name='Category' />
         <Value Type='Choice'>Bug</Value>
      </Eq>
   </Where>
</Query>

内部的には、クエリを次のように変更します。

<Query>
   <Where>
      <And>
         <Eq>
            <FieldRef Name='Category' />
            <Value Type='Choice'>Bug</Value>
         </Eq>
         <Eq>
            <FieldRef Name='AssignedTo' />
            <Value Type='Integer'><UserID /></Value>
         </Eq>
      </And>
   </Where>
</Query>

ユーザーから送信されたクエリを検証するための最良の方法は何だと思いますか?

4

1 に答える 1

2

許可するクエリがかなり制限されている場合は、有効なクエリを表すスキーマを構築することをお勧めします。次に、そのスキーマに従って xml が有効かどうかを確認できます。また、コードから CAML Builder dll を使用できることも知っています。この例をすぐに見つけることはできませんが、try/catch ブロックで CAML 構築メソッドを使用して、無効なクエリが構築されないようにする方法があるかもしれません。

また、表示名とは異なる可能性があるフィールドの内部名を使用して、CAML クエリの FieldRef を作成する必要があるという事実に注意する必要があるかもしれません。

于 2011-04-27T00:16:44.810 に答える