2

CAML クエリに基づいてコンテンツをフィルタリングする必要があるドロップダウンがあります。このクエリは、ユーザーが設定する必要があります。

ユーザーが CAML クエリまたはその他の一般的なマークアップを入力できるようにする最善の方法は何ですか?

例:

<OrderBy><FieldRef Name='SomeColumn' Ascending='True' /></OrderBy>

テキストボックスを使用する場合、検証を無効にする必要があります。そうしないと、クエリの内容が失われます。これは、.NET が HTML のようなタグを取り除いて XSS に対抗するためです。

クエリ コンフィギュレーターを構築するプロセスを実行したくありませんが、検証を無効にすることは悪い習慣であることも理解しています。ここに妥協点はありますか、それとももっと良い方法がありますか?

検証を無効にして System.Web.HttpUtility.HtmlEncode を使用することは有効な解決策でしょうか?

前もって感謝します。

4

1 に答える 1

1

escapeアップロード前に JavaScript メソッドを使用してテキストを変更Server.UrlDecodeし、Web サーバーで使用して元の状態に戻します。

いつそうするかについては、onsubmitイベントを処理し、テキストボックスの内容を隠しフィールドにコピーしてアップロードするように指示します (ただし、テキストボックスは送信しないでください)。

于 2012-11-30T00:24:56.567 に答える