12

Web API URL の一部として「危険な文字」を含むリクエストに問題があります。URL には、適切にエンコードされた & が含まれていますが、それでも Request Validation ASP.NET エラーが発生します。

MVC とは異なり、この機能を強制および無効にする [ValidateInput(false)] 属性はないようです。

4

4 に答える 4

8

答えは、次を使用して web.config でこれを行うことです。

<system.web>
  <httpRuntime requestPathInvalidCharacters="" />  
</system.web>

これは、グローバルまたはサブディレクトリ レベルで設定できます。この要素を利用して、<location path="">特定のパスの下でのみこの設定を指定できます。たとえば、影響を受けた Web API ルートがapi/imagesの下にある場合は、次のようにすることができます。

<location path="api/images">
  <system.web>
    <httpRuntime requestPathInvalidCharacters="" />  
  </system.web>
</location>

詳細: https://msdn.microsoft.com/en-us/library/e1f13641(v=vs.100).aspx

于 2012-03-14T08:49:18.563 に答える
3

構成で RequestValidation を 4.0 に設定すると、答えはノーです。ただし、2.0 リクエスト検証に戻すことができます。その場合、MVC 属性は期待どおりに機能します。デフォルトで検証し、必要に応じて明示的にオーバーライドします。

<httpRuntime executionTimeout="300" requestValidationMode="2.0" />

これといくつかのオプションについて詳しく説明しました: http://www.west-wind.com/weblog/posts/2010/Aug/19/RequestValidation-Changes-in-ASPNET-40

于 2013-04-10T00:54:13.653 に答える
2

@Levi ごとに、Web セキュリティ担当者:

構成はこれを行う唯一の方法です。MVC の[ValidateInput (false)] でさえ、この特定のシナリオには役に立ちません。

Web.configで無効にする必要はありません。信頼できないデータを検証してエンコードすることで優れたセキュリティ プラクティスに従っている場合は、それをアプリケーション全体に適用してもまったく問題ありません。

于 2013-04-10T00:41:56.763 に答える