Web API URL の一部として「危険な文字」を含むリクエストに問題があります。URL には、適切にエンコードされた & が含まれていますが、それでも Request Validation ASP.NET エラーが発生します。
MVC とは異なり、この機能を強制および無効にする [ValidateInput(false)] 属性はないようです。
Web API URL の一部として「危険な文字」を含むリクエストに問題があります。URL には、適切にエンコードされた & が含まれていますが、それでも Request Validation ASP.NET エラーが発生します。
MVC とは異なり、この機能を強制および無効にする [ValidateInput(false)] 属性はないようです。
答えは、次を使用して 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
構成で 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
@Levi ごとに、Web セキュリティ担当者:
構成はこれを行う唯一の方法です。MVC の[ValidateInput (false)] でさえ、この特定のシナリオには役に立ちません。
Web.configで無効にする必要はありません。信頼できないデータを検証してエンコードすることで優れたセキュリティ プラクティスに従っている場合は、それをアプリケーション全体に適用してもまったく問題ありません。