6

(ASP.NET 4.0 C#)

私は<httpRuntime requestValidationMode="2.0" />webconfigに私のものを持っています。そしてvalidateRequest="false"、ページ内のディレクトリがあります。

1 つのページで、データ (html) を ckeditor (テキストエリア) からデータベースに送信します。正常に動作します。別のページで、ckeditor にデータベースからのデータを入力し、それを更新 (返送) すると、有名な「潜在的に危険な Request.Form 値がクライアントから検出されました」というメッセージが表示されます。

とても混乱します。唯一の違いは、2 ページ目ではデータがテキストエリアに動的に挿入され、最初のページではページロード時にテキストエリアが空になることです。ここで何か不足していますか?フレームワークは、バックエンドでそれをいじり始める前にそれを停止するため、エンコーディング/デコーディングは何の意味もないと確信しています。

4

3 に答える 3

1

さて、なぜそれがそのように振る舞うかについての答えは見つかりませんでした。しかし、私はそれを回避する非常に簡単で迅速な方法を見つけました (+ 新しいメリット)。

.net ckeditor コントロールを作成した人がいます

http://cksource.com/forums/viewtopic.php?f=11&t=15882

いこうぜ。魅力のように機能します。検証エラーはこれまでにありません。

于 2011-04-08T21:08:25.633 に答える
0

ValidationRequest = "false"は、以前のバージョンのフレームワークの.aspxファイルにのみ適用されます。

ASP.NET 4では、HTTP要求のBeginRequestフェーズの前に、すべての要求に対して有効になっています。したがって、要求の検証は、Webサービス呼び出しやカスタムHTTPハンドラーなどのすべてのASP.NETリソースの要求に適用されます。

この新しいメカニズムをバイパスするには、独自のRequestValidatorを作成し、このカスタムバリデーターを使用するようにweb.configを変更する必要があります。

http://msdn.microsoft.com/en-us/library/system.web.util.requestvalidator.aspx

于 2011-04-06T14:58:06.280 に答える
0

page ディレクティブで ValidateRequest を false に設定してみてください。Microsoft Anti-Cross Site Scripting Library を使用することをお勧めします。

http://msdn.microsoft.com/en-us/library/aa973813.aspx

同様の質問がここで回答されました:

requestValidationMode 2.0 と 4.0 の違いは何ですか

ASP.NET 4.0 がインストールされていないか、アプリケーション プールが 4.0 で実行するように設定されていない可能性もあります。

于 2011-04-04T20:56:11.143 に答える